[NETNS][IPV6]: Make mld_max_msf readonly in other namespaces.
authorDaniel Lezcano <dlezcano@fr.ibm.com>
Thu, 10 Jan 2008 10:57:43 +0000 (02:57 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 28 Jan 2008 23:01:19 +0000 (15:01 -0800)
The mld_max_msf protects the system with a maximum allowed multicast
source filters. Making this variable per namespace can be potentially
an problem if someone inside a namespace set it to a big value, that
will impact the whole system including other namespaces.

I don't see any benefits to have it per namespace for now, so in order
to keep a directory entry in a newly created namespace, I make it
read-only when we are not in the initial network namespace.

Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/sysctl_net_ipv6.c

index ae3cfd1b8e0eddf29b0f3cc8e54f89b977883183..d223159638d34a73f9c2c3c641e6d29501f05e80 100644 (file)
@@ -122,6 +122,12 @@ static int ipv6_sysctl_net_init(struct net *net)
        ipv6_table[5].data = &net->ipv6.sysctl.frags.timeout;
        ipv6_table[6].data = &net->ipv6.sysctl.frags.secret_interval;
 
+       /* 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[7].mode = 0444;
+
        net->ipv6.sysctl.table = register_net_sysctl_table(net, net_ipv6_ctl_path,
                                                           ipv6_table);
        if (!net->ipv6.sysctl.table)