diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-07-22 09:06:21 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-22 09:06:21 +0200 |
commit | 76c3bb15d6786a0b8da0ad0090e0c9c3672fc08b (patch) | |
tree | 3824e008db9d554229a70c85fbbc13238276bd7a /net/ipv6/sysctl_net_ipv6.c | |
parent | 7be42004065ce4df193aeef5befd26805267d0d9 (diff) | |
parent | 93ded9b8fd42abe2c3607097963d8de6ad9117eb (diff) | |
download | linux-76c3bb15d6786a0b8da0ad0090e0c9c3672fc08b.tar.gz linux-76c3bb15d6786a0b8da0ad0090e0c9c3672fc08b.tar.bz2 linux-76c3bb15d6786a0b8da0ad0090e0c9c3672fc08b.zip |
Merge branch 'linus' into x86/x2apic
Diffstat (limited to 'net/ipv6/sysctl_net_ipv6.c')
-rw-r--r-- | net/ipv6/sysctl_net_ipv6.c | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/net/ipv6/sysctl_net_ipv6.c b/net/ipv6/sysctl_net_ipv6.c index 3804dcbbfab0..5c99274558bf 100644 --- a/net/ipv6/sysctl_net_ipv6.c +++ b/net/ipv6/sysctl_net_ipv6.c @@ -37,6 +37,10 @@ static ctl_table ipv6_table_template[] = { .mode = 0644, .proc_handler = &proc_dointvec }, + { .ctl_name = 0 } +}; + +static ctl_table ipv6_table[] = { { .ctl_name = NET_IPV6_MLD_MAX_MSF, .procname = "mld_max_msf", @@ -80,12 +84,6 @@ static int ipv6_sysctl_net_init(struct net *net) ipv6_table[2].data = &net->ipv6.sysctl.bindv6only; - /* We don't want this value to be per namespace, it should be global - to all namespaces, so make it read-only when we are not in the - init network namespace */ - if (net != &init_net) - ipv6_table[3].mode = 0444; - net->ipv6.sysctl.table = register_net_sysctl_table(net, net_ipv6_ctl_path, ipv6_table); if (!net->ipv6.sysctl.table) @@ -126,12 +124,29 @@ static struct pernet_operations ipv6_sysctl_net_ops = { .exit = ipv6_sysctl_net_exit, }; +static struct ctl_table_header *ip6_header; + int ipv6_sysctl_register(void) { - return register_pernet_subsys(&ipv6_sysctl_net_ops); + int err = -ENOMEM;; + + ip6_header = register_net_sysctl_rotable(net_ipv6_ctl_path, ipv6_table); + if (ip6_header == NULL) + goto out; + + err = register_pernet_subsys(&ipv6_sysctl_net_ops); + if (err) + goto err_pernet; +out: + return err; + +err_pernet: + unregister_net_sysctl_table(ip6_header); + goto out; } void ipv6_sysctl_unregister(void) { + unregister_net_sysctl_table(ip6_header); unregister_pernet_subsys(&ipv6_sysctl_net_ops); } |