[PATCH] rtnetlink: wire up rtnl_net_debug_exit

Arnd Bergmann posted 1 patch 1 month, 1 week ago
net/core/rtnl_net_debug.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
[PATCH] rtnetlink: wire up rtnl_net_debug_exit
Posted by Arnd Bergmann 1 month, 1 week ago
From: Arnd Bergmann <arnd@arndb.de>

The function is never called, but causes a build warning:

net/core/rtnl_net_debug.c:125:20: error: 'rtnl_net_debug_exit' defined but not used [-Werror=unused-function]
  125 | static void __exit rtnl_net_debug_exit(void)
      |                    ^~~~~~~~~~~~~~~~~~~
WARNING: modpost: vmlinux: section mismatch in reference: rtnl_net_debug_exit+0x1c (section: .exit.text) -> rtnl_net_debug_net_ops (section: .init.data)

Use this as the exitcall as was clearly intended and remove the __net_initdata
annotation on rtnl_net_debug_net_ops to ensure the structure remains there.

Fixes: 03fa53485659 ("rtnetlink: Add ASSERT_RTNL_NET() placeholder for netdev notifier.")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 net/core/rtnl_net_debug.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/net/core/rtnl_net_debug.c b/net/core/rtnl_net_debug.c
index e90a32242e22..efb8a5bc9ee4 100644
--- a/net/core/rtnl_net_debug.c
+++ b/net/core/rtnl_net_debug.c
@@ -96,7 +96,7 @@ static void __net_exit rtnl_net_debug_net_exit(struct net *net)
 	unregister_netdevice_notifier_net(net, nb);
 }
 
-static struct pernet_operations rtnl_net_debug_net_ops __net_initdata = {
+static struct pernet_operations rtnl_net_debug_net_ops = {
 	.init = rtnl_net_debug_net_init,
 	.exit = rtnl_net_debug_net_exit,
 	.id = &rtnl_net_debug_net_id,
@@ -121,11 +121,11 @@ static int __init rtnl_net_debug_init(void)
 
 	return ret;
 }
+subsys_initcall(rtnl_net_debug_init);
 
 static void __exit rtnl_net_debug_exit(void)
 {
 	unregister_netdevice_notifier(&rtnl_net_debug_block);
 	unregister_pernet_device(&rtnl_net_debug_net_ops);
 }
-
-subsys_initcall(rtnl_net_debug_init);
+module_exit(rtnl_net_debug_exit);
-- 
2.39.5
Re: [PATCH] rtnetlink: wire up rtnl_net_debug_exit
Posted by Eric Dumazet 1 month, 1 week ago
On Tue, Oct 15, 2024 at 5:10 PM Arnd Bergmann <arnd@kernel.org> wrote:
>
> From: Arnd Bergmann <arnd@arndb.de>
>
> The function is never called, but causes a build warning:
>
> net/core/rtnl_net_debug.c:125:20: error: 'rtnl_net_debug_exit' defined but not used [-Werror=unused-function]
>   125 | static void __exit rtnl_net_debug_exit(void)
>       |                    ^~~~~~~~~~~~~~~~~~~
> WARNING: modpost: vmlinux: section mismatch in reference: rtnl_net_debug_exit+0x1c (section: .exit.text) -> rtnl_net_debug_net_ops (section: .init.data)
>
> Use this as the exitcall as was clearly intended and remove the __net_initdata
> annotation on rtnl_net_debug_net_ops to ensure the structure remains there.
>
> Fixes: 03fa53485659 ("rtnetlink: Add ASSERT_RTNL_NET() placeholder for netdev notifier.")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---

This was fixed with :

commit bb9df28e6fcda6a96860e7b77f3912ef50e06793
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Thu Oct 10 10:24:33 2024 -0700

    rtnl_net_debug: Remove rtnl_net_debug_exit().

    kernel test robot reported section mismatch in rtnl_net_debug_exit().

      WARNING: modpost: vmlinux: section mismatch in reference:
rtnl_net_debug_exit+0x20 (section: .exit.text) ->
rtnl_net_debug_net_ops (section: .init.data)

    rtnl_net_debug_exit() uses rtnl_net_debug_net_ops() that is annotated
    as __net_initdata, but this file is always built-in.

    Let's remove rtnl_net_debug_exit().

    Fixes: 03fa53485659 ("rtnetlink: Add ASSERT_RTNL_NET() placeholder
for netdev notifier.")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202410101854.i0vQCaDz-lkp@intel.com/
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Link: https://patch.msgid.link/20241010172433.67694-1-kuniyu@amazon.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>

diff --git a/net/core/rtnl_net_debug.c b/net/core/rtnl_net_debug.c
index e90a32242e22b6d1d4d4a7888b19a9d8137f8fc4..f406045cbd0e60653af480270bc45928f9e92839
100644
--- a/net/core/rtnl_net_debug.c
+++ b/net/core/rtnl_net_debug.c
@@ -122,10 +122,4 @@ static int __init rtnl_net_debug_init(void)
        return ret;
 }

-static void __exit rtnl_net_debug_exit(void)
-{
-       unregister_netdevice_notifier(&rtnl_net_debug_block);
-       unregister_pernet_device(&rtnl_net_debug_net_ops);
-}
-
 subsys_initcall(rtnl_net_debug_init);