net: Move all of the network sysctls without a namespace into init_net.
This makes it clearer which sysctls are relative to your current network namespace. This makes it a little less error prone by not exposing sysctls for the initial network namespace in other namespaces. This is the same way we handle all of our other network interfaces to userspace and I can't honestly remember why we didn't do this for sysctls right from the start. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Acked-by: Pavel Emelyanov <xemul@parallels.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
4344475797
commit
5dd3df105b
@@ -588,7 +588,7 @@ static int __init ip6_queue_init(void)
|
||||
#endif
|
||||
register_netdevice_notifier(&ipq_dev_notifier);
|
||||
#ifdef CONFIG_SYSCTL
|
||||
ipq_sysctl_header = register_sysctl_paths(net_ipv6_ctl_path, ipq_table);
|
||||
ipq_sysctl_header = register_net_sysctl_table(&init_net, net_ipv6_ctl_path, ipq_table);
|
||||
#endif
|
||||
status = nf_register_queue_handler(NFPROTO_IPV6, &nfqh);
|
||||
if (status < 0) {
|
||||
@@ -599,7 +599,7 @@ static int __init ip6_queue_init(void)
|
||||
|
||||
cleanup_sysctl:
|
||||
#ifdef CONFIG_SYSCTL
|
||||
unregister_sysctl_table(ipq_sysctl_header);
|
||||
unregister_net_sysctl_table(ipq_sysctl_header);
|
||||
#endif
|
||||
unregister_netdevice_notifier(&ipq_dev_notifier);
|
||||
proc_net_remove(&init_net, IPQ_PROC_FS_NAME);
|
||||
@@ -621,7 +621,7 @@ static void __exit ip6_queue_fini(void)
|
||||
ipq_flush(NULL, 0);
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
unregister_sysctl_table(ipq_sysctl_header);
|
||||
unregister_net_sysctl_table(ipq_sysctl_header);
|
||||
#endif
|
||||
unregister_netdevice_notifier(&ipq_dev_notifier);
|
||||
proc_net_remove(&init_net, IPQ_PROC_FS_NAME);
|
||||
|
@@ -626,7 +626,7 @@ int nf_ct_frag6_init(void)
|
||||
inet_frags_init(&nf_frags);
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
nf_ct_frag6_sysctl_header = register_sysctl_paths(nf_net_netfilter_sysctl_path,
|
||||
nf_ct_frag6_sysctl_header = register_net_sysctl_table(&init_net, nf_net_netfilter_sysctl_path,
|
||||
nf_ct_frag6_sysctl_table);
|
||||
if (!nf_ct_frag6_sysctl_header) {
|
||||
inet_frags_fini(&nf_frags);
|
||||
@@ -640,7 +640,7 @@ int nf_ct_frag6_init(void)
|
||||
void nf_ct_frag6_cleanup(void)
|
||||
{
|
||||
#ifdef CONFIG_SYSCTL
|
||||
unregister_sysctl_table(nf_ct_frag6_sysctl_header);
|
||||
unregister_net_sysctl_table(nf_ct_frag6_sysctl_header);
|
||||
nf_ct_frag6_sysctl_header = NULL;
|
||||
#endif
|
||||
inet_frags_fini(&nf_frags);
|
||||
|
@@ -165,7 +165,7 @@ static struct ctl_table_header *ip6_base;
|
||||
|
||||
int ipv6_static_sysctl_register(void)
|
||||
{
|
||||
ip6_base = register_sysctl_paths(net_ipv6_ctl_path, ipv6_static_skeleton);
|
||||
ip6_base = register_net_sysctl_table(&init_net, net_ipv6_ctl_path, ipv6_static_skeleton);
|
||||
if (ip6_base == NULL)
|
||||
return -ENOMEM;
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user