fix kbuild warning in iptable_nat.o
Subsystems (3)
G'day list
There are a couple of Kbuild warnings in net/ipv4/netfilter/ that would be nice to get rid of.
WARNING: net/ipv4/netfilter/ip_conntrack.o - Section mismatch: reference to .init.text:ip_conntrack_init from .text between 'init_or_cleanup' (at offset 0x7ea) and '__hash_conntrack'
WARNING: net/ipv4/netfilter/iptable_nat.o - Section mismatch: reference to .init.text:ip_nat_rule_init from .text between 'init_or_cleanup' (at offset 0x455) and 'nat_decode_session'
I have a patch for the 'iptable_nat.o' warning below, and I was just wanting to check in and see if any of you netfilter guys had a problem with this patch, or with me doing a similar patch for the 'ip_canntrack.o' warning.
Any input would be welcome, thanks in advance :).
Darren J
PS You will have to CC: me as I am not on the netfilter list
net/ipv4/netfilter/ip_nat_standalone.c renamed from net/ipv4/netfilter/ip_nat_standalone.c.orig +49 -37
@@ -354,14 +354,46 @@ static struct nf_hook_ops ip_nat_adjust_ }; -static int init_or_cleanup (int init) +/* +** Note: This is used to clean up on unload +** but is also used in the init() error path +** to relinquish resources before exiting +*/ +static void cleanup (int clean_level) +{ + +switch (clean_level) { + +case 0 : +nf_unregister_hook (&ip_nat_local_in_ops); +case 1 : +nf_unregister_hook (&ip_nat_local_out_ops); +case 2 : +nf_unregister_hook (&ip_nat_adjust_out_ops); +case 3 : +nf_unregister_hook (&ip_nat_adjust_in_ops); +case 4 : +nf_unregister_hook (&ip_nat_out_ops); +case 5 : +nf_unregister_hook (&ip_nat_in_ops); +case 6 : +ip_nat_rule_cleanup (); +case 7 : +#ifdef CONFIG_XFRM + ip_nat_decode_session =NULL ; +synchronize_net (); +#endif +break ; + } +} + + +static int __init init (void ) {int ret =0 ;need_conntrack (); -if (!init) goto cleanup; -#ifdef CONFIG_XFRM BUG_ON (ip_nat_decode_session !=NULL ); ip_nat_decode_session = nat_decode_session;
@@ -369,70 +401,50 @@ static int init_or_cleanup(int init) ret =ip_nat_rule_init ();if (ret <0 ) {printk ("ip_nat_init: can't setup rules.\n" ); - goto cleanup_decode_session; +cleanup (7 ); +return ret; } ret =nf_register_hook (&ip_nat_in_ops);if (ret <0 ) {printk ("ip_nat_init: can't register in hook.\n" ); - goto cleanup_rule_init; +cleanup (6 ); +return ret; } ret =nf_register_hook (&ip_nat_out_ops);if (ret <0 ) {printk ("ip_nat_init: can't register out hook.\n" ); - goto cleanup_inops; +cleanup (5 ); +return ret; } ret =nf_register_hook (&ip_nat_adjust_in_ops);if (ret <0 ) {printk ("ip_nat_init: can't register adjust in hook.\n" ); - goto cleanup_outops; +cleanup (4 ); +return ret; } ret =nf_register_hook (&ip_nat_adjust_out_ops);if (ret <0 ) {printk ("ip_nat_init: can't register adjust out hook.\n" ); - goto cleanup_adjustin_ops; +cleanup (3 ); +return ret; } ret =nf_register_hook (&ip_nat_local_out_ops);if (ret <0 ) {printk ("ip_nat_init: can't register local out hook.\n" ); - goto cleanup_adjustout_ops; +cleanup (2 ); +return ret; } ret =nf_register_hook (&ip_nat_local_in_ops);if (ret <0 ) {printk ("ip_nat_init: can't register local in hook.\n" ); - goto cleanup_localoutops; +cleanup (1 ); }return ret; - - cleanup: -nf_unregister_hook (&ip_nat_local_in_ops); - cleanup_localoutops: -nf_unregister_hook (&ip_nat_local_out_ops); - cleanup_adjustout_ops: -nf_unregister_hook (&ip_nat_adjust_out_ops); - cleanup_adjustin_ops: -nf_unregister_hook (&ip_nat_adjust_in_ops); - cleanup_outops: -nf_unregister_hook (&ip_nat_out_ops); - cleanup_inops: -nf_unregister_hook (&ip_nat_in_ops); - cleanup_rule_init: -ip_nat_rule_cleanup (); - cleanup_decode_session: -#ifdef CONFIG_XFRM - ip_nat_decode_session =NULL ; -synchronize_net (); -#endif -return ret; -} - -static int __init init (void ) -{ -return init_or_cleanup (1 ); } static void __exit fini(void) { -init_or_cleanup (0 ); +cleanup (0 ); }module_init (init);
_______________________________________________
Kernel-janitors mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/kernel-janitors
Quoted 12 lines · Darren Jenkins\
G'day list
There are a couple of
Kbuildwarnings innet/ipv4/netfilter/that would be nice to get rid of.WARNING:
net/ipv4/netfilter/ip_conntrack.o- Section mismatch: reference to .init.text:ip_conntrack_init from .text between 'init_or_cleanup' (at offset0x7ea) and '__hash_conntrack'
WARNING:net/ipv4/netfilter/iptable_nat.o- Section mismatch: reference to .init.text:ip_nat_rule_init from .text between 'init_or_cleanup' (at offset0x455) and 'nat_decode_session'
Quoted 7 lines
I have a patch for the 'iptable_nat.o' warning below, and I was just wanting to check in and see if any of you netfilter guys had a problem with this patch, or with me doing a similar patch for the 'ip_canntrack.o' warning.
Any input would be welcome, thanks in advance :).
I have a patch queued that just splits the init/cleanup parts.
_______________________________________________
Kernel-janitors mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/kernel-janitors