Message ID | 20241018151217.3558216-1-arnd@kernel.org (mailing list archive) |
---|---|
State | Rejected |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | ipmr: Don't mark ip6mr_rtnl_msg_handlers as __initconst | expand |
From: Arnd Bergmann <arnd@kernel.org> Date: Fri, 18 Oct 2024 15:12:14 +0000 > From: Arnd Bergmann <arnd@arndb.de> > > This gets referenced by the ip6_mr_cleanup function, so it must not be > discarded early: > > WARNING: modpost: vmlinux: section mismatch in reference: ip6_mr_cleanup+0x14 (section: .exit.text) -> ip6mr_rtnl_msg_handlers (section: .init.rodata) > ERROR: modpost: Section mismatches detected. > Set CONFIG_SECTION_MISMATCH_WARN_ONLY=y to allow them. > > Fixes: 3ac84e31b33e ("ipmr: Use rtnl_register_many().") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Hi, I posted this yesterday. https://lore.kernel.org/netdev/20241017174732.39487-1-kuniyu@amazon.com/ Thanks > --- > net/ipv6/ip6mr.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/ipv6/ip6mr.c b/net/ipv6/ip6mr.c > index 437a9fdb67f5..f7892afba980 100644 > --- a/net/ipv6/ip6mr.c > +++ b/net/ipv6/ip6mr.c > @@ -1367,7 +1367,7 @@ static struct pernet_operations ip6mr_net_ops = { > .exit_batch = ip6mr_net_exit_batch, > }; > > -static const struct rtnl_msg_handler ip6mr_rtnl_msg_handlers[] __initconst_or_module = { > +static const struct rtnl_msg_handler ip6mr_rtnl_msg_handlers[] = { > {.owner = THIS_MODULE, .protocol = RTNL_FAMILY_IP6MR, > .msgtype = RTM_GETROUTE, > .doit = ip6mr_rtm_getroute, .dumpit = ip6mr_rtm_dumproute}, > -- > 2.39.5
On Fri, Oct 18, 2024, at 16:31, Kuniyuki Iwashima wrote: > From: Arnd Bergmann <arnd@kernel.org> > Date: Fri, 18 Oct 2024 15:12:14 +0000 >> From: Arnd Bergmann <arnd@arndb.de> >> >> This gets referenced by the ip6_mr_cleanup function, so it must not be >> discarded early: >> >> WARNING: modpost: vmlinux: section mismatch in reference: ip6_mr_cleanup+0x14 (section: .exit.text) -> ip6mr_rtnl_msg_handlers (section: .init.rodata) >> ERROR: modpost: Section mismatches detected. >> Set CONFIG_SECTION_MISMATCH_WARN_ONLY=y to allow them. >> >> Fixes: 3ac84e31b33e ("ipmr: Use rtnl_register_many().") >> Signed-off-by: Arnd Bergmann <arnd@arndb.de> > > Hi, > > I posted this yesterday. > https://lore.kernel.org/netdev/20241017174732.39487-1-kuniyu@amazon.com/ Right, your may be better then. I was confused by the function name suggesting that this would be called in the module_exit path, but I now see that it is only called at init time, so that works. Arnd
From: "Arnd Bergmann" <arnd@arndb.de> Date: Fri, 18 Oct 2024 19:09:10 +0000 > On Fri, Oct 18, 2024, at 16:31, Kuniyuki Iwashima wrote: > > From: Arnd Bergmann <arnd@kernel.org> > > Date: Fri, 18 Oct 2024 15:12:14 +0000 > >> From: Arnd Bergmann <arnd@arndb.de> > >> > >> This gets referenced by the ip6_mr_cleanup function, so it must not be > >> discarded early: > >> > >> WARNING: modpost: vmlinux: section mismatch in reference: ip6_mr_cleanup+0x14 (section: .exit.text) -> ip6mr_rtnl_msg_handlers (section: .init.rodata) > >> ERROR: modpost: Section mismatches detected. > >> Set CONFIG_SECTION_MISMATCH_WARN_ONLY=y to allow them. > >> > >> Fixes: 3ac84e31b33e ("ipmr: Use rtnl_register_many().") > >> Signed-off-by: Arnd Bergmann <arnd@arndb.de> > > > > Hi, > > > > I posted this yesterday. > > https://lore.kernel.org/netdev/20241017174732.39487-1-kuniyu@amazon.com/ > > Right, your may be better then. I was confused by the > function name suggesting that this would be called in the > module_exit path, but I now see that it is only called > at init time, so that works. Since the commit below, IPv6 has lost unloadability, and such cleanup functions are only called from init path now. commit 8ce440610357b77587433d0df647cea69a6890a8 Author: Cong Wang <amwang@redhat.com> Date: Sat Sep 21 11:12:21 2013 +0800 ipv6: do not allow ipv6 module to be removed
diff --git a/net/ipv6/ip6mr.c b/net/ipv6/ip6mr.c index 437a9fdb67f5..f7892afba980 100644 --- a/net/ipv6/ip6mr.c +++ b/net/ipv6/ip6mr.c @@ -1367,7 +1367,7 @@ static struct pernet_operations ip6mr_net_ops = { .exit_batch = ip6mr_net_exit_batch, }; -static const struct rtnl_msg_handler ip6mr_rtnl_msg_handlers[] __initconst_or_module = { +static const struct rtnl_msg_handler ip6mr_rtnl_msg_handlers[] = { {.owner = THIS_MODULE, .protocol = RTNL_FAMILY_IP6MR, .msgtype = RTM_GETROUTE, .doit = ip6mr_rtm_getroute, .dumpit = ip6mr_rtm_dumproute},