Re: Patch "decnet: Fix disappearing sysctl entries" has been added to the 3.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



<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


[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]