diff mbox series

w90p910_ether: remove incorrect __init annotation

Message ID 20181210204514.2362328-1-arnd@arndb.de
State Accepted
Commit 51367e423c6501a26e67d91a655d2bc892303462
Headers show
Series w90p910_ether: remove incorrect __init annotation | expand

Commit Message

Arnd Bergmann Dec. 10, 2018, 8:45 p.m. UTC
The get_mac_address() function is normally inline, but when it is
not, we get a warning that this configuration is broken:

WARNING: vmlinux.o(.text+0x4aff00): Section mismatch in reference from the function w90p910_ether_setup() to the function .init.text:get_mac_address()
The function w90p910_ether_setup() references
the function __init get_mac_address().
This is often because w90p910_ether_setup lacks a __init

Remove the __init to make it always do the right thing.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

---
 drivers/net/ethernet/nuvoton/w90p910_ether.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.20.0

Comments

David Miller Dec. 14, 2018, 9:23 p.m. UTC | #1
From: Arnd Bergmann <arnd@arndb.de>

Date: Mon, 10 Dec 2018 21:45:07 +0100

> The get_mac_address() function is normally inline, but when it is

> not, we get a warning that this configuration is broken:

> 

> WARNING: vmlinux.o(.text+0x4aff00): Section mismatch in reference from the function w90p910_ether_setup() to the function .init.text:get_mac_address()

> The function w90p910_ether_setup() references

> the function __init get_mac_address().

> This is often because w90p910_ether_setup lacks a __init

> 

> Remove the __init to make it always do the right thing.

> 

> Signed-off-by: Arnd Bergmann <arnd@arndb.de>


Actually I think we can validly mark w90p910_ether_setup() and
w90p910_probe() with appropriate init tagging.  None of these
functions are invoked outside of the probing paths.
Arnd Bergmann Dec. 14, 2018, 10:22 p.m. UTC | #2
On Fri, Dec 14, 2018 at 10:23 PM David Miller <davem@davemloft.net> wrote:
>

> From: Arnd Bergmann <arnd@arndb.de>

> Date: Mon, 10 Dec 2018 21:45:07 +0100

>

> > The get_mac_address() function is normally inline, but when it is

> > not, we get a warning that this configuration is broken:

> >

> > WARNING: vmlinux.o(.text+0x4aff00): Section mismatch in reference from the function w90p910_ether_setup() to the function .init.text:get_mac_address()

> > The function w90p910_ether_setup() references

> > the function __init get_mac_address().

> > This is often because w90p910_ether_setup lacks a __init

> >

> > Remove the __init to make it always do the right thing.

> >

> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>

>

> Actually I think we can validly mark w90p910_ether_setup() and

> w90p910_probe() with appropriate init tagging.  None of these

> functions are invoked outside of the probing paths.


But then we have to change the driver to use
module_platform_driver_probe(), to ensure we cannot
unbind/rebind the device. I usually don't like doing that,
unless the device can never be stopped after it has
been initialized.

       Arnd

       Arnd
David Miller Dec. 14, 2018, 10:43 p.m. UTC | #3
From: Arnd Bergmann <arnd@arndb.de>

Date: Fri, 14 Dec 2018 23:22:10 +0100

> On Fri, Dec 14, 2018 at 10:23 PM David Miller <davem@davemloft.net> wrote:

>>

>> From: Arnd Bergmann <arnd@arndb.de>

>> Date: Mon, 10 Dec 2018 21:45:07 +0100

>>

>> > The get_mac_address() function is normally inline, but when it is

>> > not, we get a warning that this configuration is broken:

>> >

>> > WARNING: vmlinux.o(.text+0x4aff00): Section mismatch in reference from the function w90p910_ether_setup() to the function .init.text:get_mac_address()

>> > The function w90p910_ether_setup() references

>> > the function __init get_mac_address().

>> > This is often because w90p910_ether_setup lacks a __init

>> >

>> > Remove the __init to make it always do the right thing.

>> >

>> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>

>>

>> Actually I think we can validly mark w90p910_ether_setup() and

>> w90p910_probe() with appropriate init tagging.  None of these

>> functions are invoked outside of the probing paths.

> 

> But then we have to change the driver to use

> module_platform_driver_probe(), to ensure we cannot

> unbind/rebind the device. I usually don't like doing that,

> unless the device can never be stopped after it has

> been initialized.


Fair enough, let's go with your simpler fix for now.

Applied.
diff mbox series

Patch

diff --git a/drivers/net/ethernet/nuvoton/w90p910_ether.c b/drivers/net/ethernet/nuvoton/w90p910_ether.c
index 052b3d2c07a1..c662c6f5bee3 100644
--- a/drivers/net/ethernet/nuvoton/w90p910_ether.c
+++ b/drivers/net/ethernet/nuvoton/w90p910_ether.c
@@ -912,7 +912,7 @@  static const struct net_device_ops w90p910_ether_netdev_ops = {
 	.ndo_validate_addr	= eth_validate_addr,
 };
 
-static void __init get_mac_address(struct net_device *dev)
+static void get_mac_address(struct net_device *dev)
 {
 	struct w90p910_ether *ether = netdev_priv(dev);
 	struct platform_device *pdev;