From: Pavel Emelyanov Date: Sat, 8 Dec 2007 08:11:51 +0000 (-0800) Subject: [NET] sysctl: prepare core tables to point to netns variables X-Git-Tag: v2.6.25-rc1~1162^2~1176 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=790a35328991b01181ff5624bdb084053b6fac54;p=linux-2.6-omap-h63xx.git [NET] sysctl: prepare core tables to point to netns variables Some of ctl variables are going to be on the struct net. Here's the way to adjust the ->data pointer on the ctl_table-s to point on the right variable. Since some pointers still point on the global variables, I keep turning the write bits off on such tables. This looks to become a common procedure for net sysctls, so later parts of this code may migrate to some more generic place. Signed-off-by: Pavel Emelyanov Signed-off-by: David S. Miller --- diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c index 57a7eadb855..dc4cf7dda9d 100644 --- a/net/core/sysctl_net_core.c +++ b/net/core/sysctl_net_core.c @@ -167,8 +167,13 @@ static __net_init int sysctl_core_net_init(struct net *net) if (tbl == NULL) goto err_dup; - for (tmp = tbl; tmp->procname; tmp++) - tmp->mode &= ~0222; + for (tmp = tbl; tmp->procname; tmp++) { + if (tmp->data >= (void *)&init_net && + tmp->data < (void *)(&init_net + 1)) + tmp->data += (char *)net - (char *)&init_net; + else + tmp->mode &= ~0222; + } } net->sysctl_core_hdr = register_net_sysctl_table(net,