* [PATCH-next v2] netfilter: don't use module_init/exit in core IPV4 code [not found] <1389638147-30399-1-git-send-email-paul.gortmaker@windriver.com> @ 2014-01-15 20:57 ` Paul Gortmaker 2014-01-16 19:26 ` Benjamin Poirier 0 siblings, 1 reply; 5+ messages in thread From: Paul Gortmaker @ 2014-01-15 20:57 UTC (permalink / raw) To: Pablo Neira Ayuso, Patrick McHardy, Jozsef Kadlecsik Cc: David S. Miller, netfilter-devel, netdev, Paul Gortmaker The file net/ipv4/netfilter.o is created based on whether CONFIG_NETFILTER is set. However that is defined as a bool, and hence this file with the core netfilter hooks will never be modular. So using module_init as an alias for __initcall can be somewhat misleading. Fix this up now, so that we can relocate module_init from init.h into module.h in the future. If we don't do this, we'd have to add module.h to obviously non-modular code, and that would be a worse thing. Also add an inclusion of init.h, as that was previously implicit here in the netfilter.c file. Note that direct use of __initcall is discouraged, vs. one of the priority categorized subgroups. As __initcall gets mapped onto device_initcall, our use of subsys_initcall (which seems to make sense for netfilter code) will thus change this registration from level 6-device to level 4-subsys (i.e. slightly earlier). However no observable impact of that small difference has been observed during testing, or is expected. (i.e. the location of the netfilter messages in dmesg remains unchanged with respect to all the other surrounding messages.) As for the module_exit, rather than replace it with __exitcall, we simply remove it, since it appears only UML does anything with those, and even for UML, there is no relevant cleanup to be done here. Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> --- [v2: Drop __exitcall stuff completely, as per Eric's suggestion given for patch at http://patchwork.ozlabs.org/patch/311164/ ] net/ipv4/netfilter.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/net/ipv4/netfilter.c b/net/ipv4/netfilter.c index c3e0adea9c27..31abf9636ba7 100644 --- a/net/ipv4/netfilter.c +++ b/net/ipv4/netfilter.c @@ -197,11 +197,4 @@ static int __init ipv4_netfilter_init(void) { return nf_register_afinfo(&nf_ip_afinfo); } - -static void __exit ipv4_netfilter_fini(void) -{ - nf_unregister_afinfo(&nf_ip_afinfo); -} - -module_init(ipv4_netfilter_init); -module_exit(ipv4_netfilter_fini); +device_initcall(ipv4_netfilter_init); -- 1.8.5.2 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH-next v2] netfilter: don't use module_init/exit in core IPV4 code 2014-01-15 20:57 ` [PATCH-next v2] netfilter: don't use module_init/exit in core IPV4 code Paul Gortmaker @ 2014-01-16 19:26 ` Benjamin Poirier 2014-01-16 19:38 ` Paul Gortmaker 2014-01-16 20:24 ` [PATCH-next v3] " Paul Gortmaker 0 siblings, 2 replies; 5+ messages in thread From: Benjamin Poirier @ 2014-01-16 19:26 UTC (permalink / raw) To: Paul Gortmaker Cc: Pablo Neira Ayuso, Patrick McHardy, Jozsef Kadlecsik, David S. Miller, netfilter-devel, netdev On 2014/01/15 15:57, Paul Gortmaker wrote: > The file net/ipv4/netfilter.o is created based on whether > CONFIG_NETFILTER is set. However that is defined as a bool, and > hence this file with the core netfilter hooks will never be > modular. So using module_init as an alias for __initcall can be > somewhat misleading. > > Fix this up now, so that we can relocate module_init from > init.h into module.h in the future. If we don't do this, we'd > have to add module.h to obviously non-modular code, and that > would be a worse thing. Also add an inclusion of init.h, as > that was previously implicit here in the netfilter.c file. > > Note that direct use of __initcall is discouraged, vs. one > of the priority categorized subgroups. As __initcall gets > mapped onto device_initcall, our use of subsys_initcall (which > seems to make sense for netfilter code) will thus change this > registration from level 6-device to level 4-subsys (i.e. slightly > earlier). However no observable impact of that small difference > has been observed during testing, or is expected. (i.e. the > location of the netfilter messages in dmesg remains unchanged > with respect to all the other surrounding messages.) > > As for the module_exit, rather than replace it with __exitcall, > we simply remove it, since it appears only UML does anything > with those, and even for UML, there is no relevant cleanup > to be done here. > > Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> > --- > > [v2: Drop __exitcall stuff completely, as per Eric's suggestion > given for patch at http://patchwork.ozlabs.org/patch/311164/ ] > > net/ipv4/netfilter.c | 9 +-------- > 1 file changed, 1 insertion(+), 8 deletions(-) > > diff --git a/net/ipv4/netfilter.c b/net/ipv4/netfilter.c > index c3e0adea9c27..31abf9636ba7 100644 > --- a/net/ipv4/netfilter.c > +++ b/net/ipv4/netfilter.c > @@ -197,11 +197,4 @@ static int __init ipv4_netfilter_init(void) > { > return nf_register_afinfo(&nf_ip_afinfo); > } > - > -static void __exit ipv4_netfilter_fini(void) > -{ > - nf_unregister_afinfo(&nf_ip_afinfo); > -} > - > -module_init(ipv4_netfilter_init); > -module_exit(ipv4_netfilter_fini); > +device_initcall(ipv4_netfilter_init); device_ vs. subsys_initcall changed from v1 of the patch and no longer matches the description I think. > -- > 1.8.5.2 > > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH-next v2] netfilter: don't use module_init/exit in core IPV4 code 2014-01-16 19:26 ` Benjamin Poirier @ 2014-01-16 19:38 ` Paul Gortmaker 2014-01-16 20:24 ` [PATCH-next v3] " Paul Gortmaker 1 sibling, 0 replies; 5+ messages in thread From: Paul Gortmaker @ 2014-01-16 19:38 UTC (permalink / raw) To: Benjamin Poirier Cc: Pablo Neira Ayuso, Patrick McHardy, Jozsef Kadlecsik, David S. Miller, netfilter-devel, netdev On 14-01-16 02:26 PM, Benjamin Poirier wrote: > On 2014/01/15 15:57, Paul Gortmaker wrote: >> The file net/ipv4/netfilter.o is created based on whether >> CONFIG_NETFILTER is set. However that is defined as a bool, and >> hence this file with the core netfilter hooks will never be >> modular. So using module_init as an alias for __initcall can be >> somewhat misleading. >> >> Fix this up now, so that we can relocate module_init from >> init.h into module.h in the future. If we don't do this, we'd >> have to add module.h to obviously non-modular code, and that >> would be a worse thing. Also add an inclusion of init.h, as >> that was previously implicit here in the netfilter.c file. >> >> Note that direct use of __initcall is discouraged, vs. one >> of the priority categorized subgroups. As __initcall gets >> mapped onto device_initcall, our use of subsys_initcall (which >> seems to make sense for netfilter code) will thus change this >> registration from level 6-device to level 4-subsys (i.e. slightly >> earlier). However no observable impact of that small difference >> has been observed during testing, or is expected. (i.e. the >> location of the netfilter messages in dmesg remains unchanged >> with respect to all the other surrounding messages.) >> >> As for the module_exit, rather than replace it with __exitcall, >> we simply remove it, since it appears only UML does anything >> with those, and even for UML, there is no relevant cleanup >> to be done here. >> >> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> >> --- >> >> [v2: Drop __exitcall stuff completely, as per Eric's suggestion >> given for patch at http://patchwork.ozlabs.org/patch/311164/ ] >> >> net/ipv4/netfilter.c | 9 +-------- >> 1 file changed, 1 insertion(+), 8 deletions(-) >> >> diff --git a/net/ipv4/netfilter.c b/net/ipv4/netfilter.c >> index c3e0adea9c27..31abf9636ba7 100644 >> --- a/net/ipv4/netfilter.c >> +++ b/net/ipv4/netfilter.c >> @@ -197,11 +197,4 @@ static int __init ipv4_netfilter_init(void) >> { >> return nf_register_afinfo(&nf_ip_afinfo); >> } >> - >> -static void __exit ipv4_netfilter_fini(void) >> -{ >> - nf_unregister_afinfo(&nf_ip_afinfo); >> -} >> - >> -module_init(ipv4_netfilter_init); >> -module_exit(ipv4_netfilter_fini); >> +device_initcall(ipv4_netfilter_init); > > device_ vs. subsys_initcall changed from v1 of the patch and no longer > matches the description I think. Thanks for spotting that ; not sure how I fat fingered that during the exitcall removal. Trying to rush things I guess. P. -- > >> -- >> 1.8.5.2 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe netdev" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH-next v3] netfilter: don't use module_init/exit in core IPV4 code 2014-01-16 19:26 ` Benjamin Poirier 2014-01-16 19:38 ` Paul Gortmaker @ 2014-01-16 20:24 ` Paul Gortmaker 2014-01-16 20:32 ` Patrick McHardy 1 sibling, 1 reply; 5+ messages in thread From: Paul Gortmaker @ 2014-01-16 20:24 UTC (permalink / raw) To: Pablo Neira Ayuso, Patrick McHardy, Jozsef Kadlecsik Cc: David S. Miller, Benjamin Poirier, netfilter-devel, netdev, Paul Gortmaker The file net/ipv4/netfilter.o is created based on whether CONFIG_NETFILTER is set. However that is defined as a bool, and hence this file with the core netfilter hooks will never be modular. So using module_init as an alias for __initcall can be somewhat misleading. Fix this up now, so that we can relocate module_init from init.h into module.h in the future. If we don't do this, we'd have to add module.h to obviously non-modular code, and that would be a worse thing. Also add an inclusion of init.h, as that was previously implicit here in the netfilter.c file. Note that direct use of __initcall is discouraged, vs. one of the priority categorized subgroups. As __initcall gets mapped onto device_initcall, our use of subsys_initcall (which seems to make sense for netfilter code) will thus change this registration from level 6-device to level 4-subsys (i.e. slightly earlier). However no observable impact of that small difference has been observed during testing, or is expected. (i.e. the location of the netfilter messages in dmesg remains unchanged with respect to all the other surrounding messages.) As for the module_exit, rather than replace it with __exitcall, we simply remove it, since it appears only UML does anything with those, and even for UML, there is no relevant cleanup to be done here. Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> --- [v3: switch accidental device_initcall back to subsys_initcall as spotted by Benjamin Poirier; retest on ppc-sbc8548 net-next] [v2: Drop __exitcall stuff completely, as per Eric's suggestion given for patch at http://patchwork.ozlabs.org/patch/311164/ ] net/ipv4/netfilter.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/net/ipv4/netfilter.c b/net/ipv4/netfilter.c index c3e0adea9c27..31abf9636ba7 100644 --- a/net/ipv4/netfilter.c +++ b/net/ipv4/netfilter.c @@ -197,11 +197,4 @@ static int __init ipv4_netfilter_init(void) { return nf_register_afinfo(&nf_ip_afinfo); } - -static void __exit ipv4_netfilter_fini(void) -{ - nf_unregister_afinfo(&nf_ip_afinfo); -} - -module_init(ipv4_netfilter_init); -module_exit(ipv4_netfilter_fini); +subsys_initcall(ipv4_netfilter_init); -- 1.8.5.2 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH-next v3] netfilter: don't use module_init/exit in core IPV4 code 2014-01-16 20:24 ` [PATCH-next v3] " Paul Gortmaker @ 2014-01-16 20:32 ` Patrick McHardy 0 siblings, 0 replies; 5+ messages in thread From: Patrick McHardy @ 2014-01-16 20:32 UTC (permalink / raw) To: Paul Gortmaker Cc: Pablo Neira Ayuso, Jozsef Kadlecsik, David S. Miller, Benjamin Poirier, netfilter-devel, netdev On Thu, Jan 16, 2014 at 03:24:03PM -0500, Paul Gortmaker wrote: > The file net/ipv4/netfilter.o is created based on whether > CONFIG_NETFILTER is set. However that is defined as a bool, and > hence this file with the core netfilter hooks will never be > modular. So using module_init as an alias for __initcall can be > somewhat misleading. > > Fix this up now, so that we can relocate module_init from > init.h into module.h in the future. If we don't do this, we'd > have to add module.h to obviously non-modular code, and that > would be a worse thing. Also add an inclusion of init.h, as > that was previously implicit here in the netfilter.c file. > > Note that direct use of __initcall is discouraged, vs. one > of the priority categorized subgroups. As __initcall gets > mapped onto device_initcall, our use of subsys_initcall (which > seems to make sense for netfilter code) will thus change this > registration from level 6-device to level 4-subsys (i.e. slightly > earlier). However no observable impact of that small difference > has been observed during testing, or is expected. (i.e. the > location of the netfilter messages in dmesg remains unchanged > with respect to all the other surrounding messages.) > > As for the module_exit, rather than replace it with __exitcall, > we simply remove it, since it appears only UML does anything > with those, and even for UML, there is no relevant cleanup > to be done here. Just to bring up the idea: there's no reason why we couldn't make netfilter fully modular for individual AFs. I've seen quite a lot of embedded systems that include the IPv6 netfilter core without using it. Its rather complicated to get all the dependencies of xtables modules right though, so this is really just to bring up the idea. Your patch looks fine to me. ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-01-16 20:32 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <1389638147-30399-1-git-send-email-paul.gortmaker@windriver.com> 2014-01-15 20:57 ` [PATCH-next v2] netfilter: don't use module_init/exit in core IPV4 code Paul Gortmaker 2014-01-16 19:26 ` Benjamin Poirier 2014-01-16 19:38 ` Paul Gortmaker 2014-01-16 20:24 ` [PATCH-next v3] " Paul Gortmaker 2014-01-16 20:32 ` Patrick McHardy
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).