[PATCH] w90p910_ether: remove incorrect __init annotation

Subsystems: networking drivers, the rest

STALE2854d

4 messages, 2 authors, 2018-12-14 · open the first message on its own page

[PATCH] w90p910_ether: remove incorrect __init annotation

From: Arnd Bergmann <arnd@arndb.de>
Date: 2018-12-10 20:45:38

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(-)
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;
-- 
2.20.0

Re: [PATCH] w90p910_ether: remove incorrect __init annotation

From: David Miller <davem@davemloft.net>
Date: 2018-12-14 21:23:03

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.

Re: [PATCH] w90p910_ether: remove incorrect __init annotation

From: Arnd Bergmann <arnd@arndb.de>
Date: 2018-12-14 22:22:30

On Fri, Dec 14, 2018 at 10:23 PM David Miller [off-list ref] wrote:
From: Arnd Bergmann <arnd@arndb.de>
Date: Mon, 10 Dec 2018 21:45:07 +0100
quoted
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

Re: [PATCH] w90p910_ether: remove incorrect __init annotation

From: David Miller <davem@davemloft.net>
Date: 2018-12-14 22:43:12

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 [off-list ref] wrote:
quoted
From: Arnd Bergmann <arnd@arndb.de>
Date: Mon, 10 Dec 2018 21:45:07 +0100
quoted
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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help