<gregkh@xxxxxxxxxxxxxxxxxxx> writes: > This is a note to let you know that I've just added the patch titled > > decnet: Fix disappearing sysctl entries > > to the 3.4-stable tree which can be found at: > http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary > > The filename of the patch is: > decnet-fix-disappearing-sysctl-entries.patch > and it can be found in the queue-3.4 subdirectory. > > If you, or anyone else, feels it should not be added to the stable tree, > please let <stable@xxxxxxxxxxxxxxx> know about it. This patch won't hurt anything in 3.4 but it is not needed. The sysctl rewrite which is the proper fix is already in 3.4. I just tested and confirmed that 3.4 does not display the problem of the decnet sysctls going away. Eric > From: ebiederm@xxxxxxxxxxxx (Eric W. Biederman) > Date: Mon, 11 Mar 2013 17:41:28 -0700 > Subject: decnet: Fix disappearing sysctl entries > To: stable@xxxxxxxxxxxxxxx > Cc: Larry Baker <baker@xxxxxxxx> > Message-ID: <8738w1ih53.fsf@xxxxxxxxxxxx> > > > When decnet is built as a module a simple: > echo 0.0 >/proc/sys/net/decnet/node_address > > results in most of the sysctl entries under /proc/sys/net/decnet and > /proc/sys/net/decnet/conf disappearing. > > For more details see http://www.spinics.net/lists/netdev/msg226123.html. > > This change applies the same workaround used in > net/core/sysctl_net_core.c and net/ipv6/sysctl_net_ipv6.c of creating > a skeleton of decnet sysctl entries before doing anything else. > > The problem first appeared in kernel 2.6.27. The later rewrite of > sysctl in kernel 3.4 restored the previous behavior and eliminated the > need for this workaround. > > This patch was heavily inspired by a similar but more complex patch by > Larry Baker. > > Reported-by: Larry Baker <baker@xxxxxxxx> > Signed-off-by: "Eric W. Biederman" <ebiederm@xxxxxxxxxxxx> > Acked-by: David Miller <davem@xxxxxxxxxx> > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > --- > net/decnet/af_decnet.c | 4 ++++ > net/decnet/sysctl_net_decnet.c | 28 ++++++++++++++++++++++++++++ > 2 files changed, 32 insertions(+) > > --- a/net/decnet/af_decnet.c > +++ b/net/decnet/af_decnet.c > @@ -2353,6 +2353,8 @@ static const struct proto_ops dn_proto_o > .sendpage = sock_no_sendpage, > }; > > +void dn_register_sysctl_skeleton(void); > +void dn_unregister_sysctl_skeleton(void); > void dn_register_sysctl(void); > void dn_unregister_sysctl(void); > > @@ -2373,6 +2375,7 @@ static int __init decnet_init(void) > if (rc != 0) > goto out; > > + dn_register_sysctl_skeleton(); > dn_neigh_init(); > dn_dev_init(); > dn_route_init(); > @@ -2412,6 +2415,7 @@ static void __exit decnet_exit(void) > dn_fib_cleanup(); > > proc_net_remove(&init_net, "decnet"); > + dn_unregister_sysctl_skeleton(); > > proto_unregister(&dn_proto); > > --- a/net/decnet/sysctl_net_decnet.c > +++ b/net/decnet/sysctl_net_decnet.c > @@ -55,6 +55,7 @@ static int max_decnet_no_fc_max_cwnd[] = > static char node_name[7] = "???"; > > static struct ctl_table_header *dn_table_header = NULL; > +static struct ctl_table_header *dn_skeleton_table_header = NULL; > > /* > * ctype.h :-) > @@ -357,6 +358,27 @@ static struct ctl_path dn_path[] = { > { } > }; > > +static struct ctl_table empty[1]; > + > +static struct ctl_table dn_skeleton[] = { > + { > + .procname = "conf", > + .mode = 0555, > + .child = empty, > + }, > + { } > +}; > + > +void dn_register_sysctl_skeleton(void) > +{ > + dn_skeleton_table_header = register_sysctl_paths(dn_path, dn_skeleton); > +} > + > +void dn_unregister_sysctl_skeleton(void) > +{ > + unregister_sysctl_table(dn_skeleton_table_header); > +} > + > void dn_register_sysctl(void) > { > dn_table_header = register_sysctl_paths(dn_path, dn_table); > @@ -368,6 +390,12 @@ void dn_unregister_sysctl(void) > } > > #else /* CONFIG_SYSCTL */ > +void dn_register_sysctl_skeleton(void) > +{ > +} > +void dn_unregister_sysctl_skeleton(void) > +{ > +} > void dn_unregister_sysctl(void) > { > } > > > Patches currently in stable-queue which might be from baker@xxxxxxxx are > > queue-3.4/decnet-fix-disappearing-sysctl-entries.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html