From: "Serge E. Hallyn" <serge@hallyn.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: David Miller <davem@davemloft.net>,
netdev@vger.kernel.org, "Serge E. Hallyn" <serge@hallyn.com>,
Gao feng <gaofeng@cn.fujitsu.com>,
pablo@netfilter.org, Stephen Hemminger <shemminger@vyatta.com>,
Pavel Emelyanov <xemul@openvz.org>
Subject: Re: [PATCH net-next 04/19] net: Kill register_sysctl_rotable
Date: Fri, 20 Apr 2012 13:53:23 +0000 [thread overview]
Message-ID: <20120420135323.GA4877@mail.hallyn.com> (raw)
In-Reply-To: <m1obqngvcg.fsf@fess.ebiederm.org>
Quoting Eric W. Biederman (ebiederm@xmission.com):
>
> register_sysctl_rotable never caught on as an interesting way to
> register sysctls. My take on the situation is that what we want are
> sysctls that we can only see in the initial network namespace. What we
> have implemented with register_sysctl_rotable are sysctls that we can
> see in all of the network namespaces and can only change in the initial
> network namespace.
>
> That is a very silly way to go. Just register the network sysctls
> in the initial network namespace and we don't have any weird special
> cases to deal with.
>
> The sysctls affected are:
> /proc/sys/net/ipv4/ipfrag_secret_interval
> /proc/sys/net/ipv4/ipfrag_max_dist
> /proc/sys/net/ipv6/ip6frag_secret_interval
> /proc/sys/net/ipv6/mld_max_msf
>
> I really don't expect anyone will miss them if they can't read them in a
> child user namespace.
If there was something userspace could do to work around certain values
of these settings then I'd say keeping the readonly values is worthwhile,
but AFAICS if a bad network context requires ipfrag_max_dist 0, there's
nothing userspace can do about it...
So from a container pov view at least, I'm happy with this. I'm far from
qualified on the netns code itself, but taking a look in the unlikely case
I can spot something :)
> CC: Pavel Emelyanov <xemul@openvz.org>
> Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
> ---
> include/net/net_namespace.h | 2 --
> net/core/sysctl_net_core.c | 2 +-
> net/ipv4/ip_fragment.c | 2 +-
> net/ipv6/reassembly.c | 2 +-
> net/ipv6/sysctl_net_ipv6.c | 2 +-
> net/sysctl_net.c | 23 -----------------------
> 6 files changed, 4 insertions(+), 29 deletions(-)
>
> diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h
> index 767dcd40..6413fcb 100644
> --- a/include/net/net_namespace.h
> +++ b/include/net/net_namespace.h
> @@ -290,8 +290,6 @@ static inline int net_sysctl_init(void) { return 0; }
> #endif
> extern struct ctl_table_header *register_net_sysctl_table(struct net *net,
> const struct ctl_path *path, struct ctl_table *table);
> -extern struct ctl_table_header *register_net_sysctl_rotable(
> - const struct ctl_path *path, struct ctl_table *table);
> extern struct ctl_table_header *register_net_sysctl(struct net *net,
> const char *path, struct ctl_table *table);
> extern void unregister_net_sysctl_table(struct ctl_table_header *header);
> diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c
> index cee5991..9504086 100644
> --- a/net/core/sysctl_net_core.c
> +++ b/net/core/sysctl_net_core.c
> @@ -257,7 +257,7 @@ static __init int sysctl_core_init(void)
> static struct ctl_table empty[1];
>
> kmemleak_not_leak(register_sysctl_paths(net_core_path, empty));
> - register_net_sysctl_rotable(net_core_path, net_core_table);
> + register_net_sysctl(&init_net, "net/core", net_core_table);
> return register_pernet_subsys(&sysctl_core_ops);
> }
>
> diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c
> index 3727e23..a746cca 100644
> --- a/net/ipv4/ip_fragment.c
> +++ b/net/ipv4/ip_fragment.c
> @@ -807,7 +807,7 @@ static void __net_exit ip4_frags_ns_ctl_unregister(struct net *net)
>
> static void ip4_frags_ctl_register(void)
> {
> - register_net_sysctl_rotable(net_ipv4_ctl_path, ip4_frags_ctl_table);
> + register_net_sysctl(&init_net, "net/ipv4", ip4_frags_ctl_table);
> }
> #else
> static inline int ip4_frags_ns_ctl_register(struct net *net)
> diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c
> index 9447bd6..42f4f7c 100644
> --- a/net/ipv6/reassembly.c
> +++ b/net/ipv6/reassembly.c
> @@ -674,7 +674,7 @@ static struct ctl_table_header *ip6_ctl_header;
>
> static int ip6_frags_sysctl_register(void)
> {
> - ip6_ctl_header = register_net_sysctl_rotable(net_ipv6_ctl_path,
> + ip6_ctl_header = register_net_sysctl(&init_net, "net/ipv6",
> ip6_frags_ctl_table);
> return ip6_ctl_header == NULL ? -ENOMEM : 0;
> }
> diff --git a/net/ipv6/sysctl_net_ipv6.c b/net/ipv6/sysctl_net_ipv6.c
> index 166a57c..06f21e5 100644
> --- a/net/ipv6/sysctl_net_ipv6.c
> +++ b/net/ipv6/sysctl_net_ipv6.c
> @@ -140,7 +140,7 @@ int ipv6_sysctl_register(void)
> {
> int err = -ENOMEM;
>
> - ip6_header = register_net_sysctl_rotable(net_ipv6_ctl_path, ipv6_rotable);
> + ip6_header = register_net_sysctl(&init_net, "net/ipv6", ipv6_rotable);
> if (ip6_header == NULL)
> goto out;
>
> diff --git a/net/sysctl_net.c b/net/sysctl_net.c
> index ce97237..2b8d1d9 100644
> --- a/net/sysctl_net.c
> +++ b/net/sysctl_net.c
> @@ -59,19 +59,6 @@ static struct ctl_table_root net_sysctl_root = {
> .permissions = net_ctl_permissions,
> };
>
> -static int net_ctl_ro_header_perms(struct ctl_table_root *root,
> - struct nsproxy *namespaces, struct ctl_table *table)
> -{
> - if (net_eq(namespaces->net_ns, &init_net))
> - return table->mode;
> - else
> - return table->mode & ~0222;
> -}
> -
> -static struct ctl_table_root net_sysctl_ro_root = {
> - .permissions = net_ctl_ro_header_perms,
> -};
> -
> static int __net_init sysctl_net_init(struct net *net)
> {
> setup_sysctl_set(&net->sysctls, &net_sysctl_root, is_seen);
> @@ -103,8 +90,6 @@ __init int net_sysctl_init(void)
> ret = register_pernet_subsys(&sysctl_pernet_ops);
> if (ret)
> goto out;
> - setup_sysctl_set(&net_sysctl_ro_root.default_set, &net_sysctl_ro_root, NULL);
> - register_sysctl_root(&net_sysctl_ro_root);
> register_sysctl_root(&net_sysctl_root);
> out:
> return ret;
> @@ -117,14 +102,6 @@ struct ctl_table_header *register_net_sysctl_table(struct net *net,
> }
> EXPORT_SYMBOL_GPL(register_net_sysctl_table);
>
> -struct ctl_table_header *register_net_sysctl_rotable(const
> - struct ctl_path *path, struct ctl_table *table)
> -{
> - return __register_sysctl_paths(&net_sysctl_ro_root.default_set,
> - path, table);
> -}
> -EXPORT_SYMBOL_GPL(register_net_sysctl_rotable);
> -
> struct ctl_table_header *register_net_sysctl(struct net *net,
> const char *path, struct ctl_table *table)
> {
> --
> 1.7.2.5
next prev parent reply other threads:[~2012-04-20 13:52 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-19 23:17 [PATCH net-next 00/19] net: Sysctl simplifications and enhancements Eric W. Biederman
2012-04-19 23:18 ` [PATCH net-next 01/19] net: Implement register_net_sysctl Eric W. Biederman
2012-04-20 5:27 ` Pavel Emelyanov
2012-04-20 8:11 ` Eric W. Biederman
2012-04-20 8:45 ` Pavel Emelyanov
2012-04-19 23:19 ` [PATCH net-next 02/19] net sysctl: Register an empty /proc/sys/net Eric W. Biederman
2012-04-19 23:20 ` [PATCH net-next 03/19] net sysctl: Initialize the network sysctls sooner to avoid problems Eric W. Biederman
2012-04-19 23:22 ` [PATCH net-next 04/19] net: Kill register_sysctl_rotable Eric W. Biederman
2012-04-20 13:53 ` Serge E. Hallyn [this message]
2012-04-20 14:42 ` Eric W. Biederman
2012-04-19 23:24 ` [PATCH net-next 05/19] net: Move all of the network sysctls without a namespace into init_net Eric W. Biederman
2012-04-23 0:38 ` Gao feng
2012-04-23 1:50 ` Eric W. Biederman
2012-04-23 2:29 ` Gao feng
2012-04-19 23:25 ` [PATCH net-next 06/19] net core: Remove unneded creation of an empty net/core sysctl directory Eric W. Biederman
2012-04-19 23:26 ` [PATCH net-next 07/19] net ipv6: Remove unneded registration of an empty net/ipv6/neigh Eric W. Biederman
2012-04-19 23:32 ` [PATCH net-next 08/19] net ipv4: Remove the unneeded registration of an empty net/ipv4/neigh Eric W. Biederman
2012-04-19 23:34 ` [PATCH net-next 09/19] net ax25: Simplify and cleanup the ax25 sysctl handling Eric W. Biederman
2012-04-19 23:35 ` [PATCH net-next 10/19] net llc: Don't use sysctl tables with .child entries Eric W. Biederman
2012-04-19 23:37 ` [PATCH net-next 11/19] net ipv6: " Eric W. Biederman
2012-04-19 23:38 ` [PATCH net-next 12/19] net neighbour: Convert to use register_net_sysctl Eric W. Biederman
2012-04-20 5:21 ` Pavel Emelyanov
2012-04-20 7:25 ` Eric W. Biederman
2012-04-22 2:36 ` Ben Hutchings
2012-04-19 23:40 ` [PATCH net-next 13/19] net decnet: " Eric W. Biederman
2012-04-19 23:41 ` [PATCH net-next 14/19] net ipv6: Convert addrconf " Eric W. Biederman
2012-04-19 23:42 ` [PATCH net-next 15/19] net ipv4: Convert devinet " Eric W. Biederman
2012-04-19 23:43 ` [PATCH net-next 16/19] net: Convert nf_conntrack_proto " Eric W. Biederman
2012-04-19 23:44 ` [PATCH net-next 17/19] net: Convert all sysctl registrations to register_net_sysctl Eric W. Biederman
2012-04-19 23:45 ` [PATCH net-next 18/19] net: Delete all remaining instances of ctl_path Eric W. Biederman
2012-04-19 23:46 ` [PATCH net-next 19/19] net: Remove register_net_sysctl_table Eric W. Biederman
2012-04-20 8:45 ` [PATCH net-next 00/19] net: Sysctl simplifications and enhancements Pavel Emelyanov
2012-04-21 1:24 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120420135323.GA4877@mail.hallyn.com \
--to=serge@hallyn.com \
--cc=davem@davemloft.net \
--cc=ebiederm@xmission.com \
--cc=gaofeng@cn.fujitsu.com \
--cc=netdev@vger.kernel.org \
--cc=pablo@netfilter.org \
--cc=shemminger@vyatta.com \
--cc=xemul@openvz.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).