Patch "ipv4: Fix non-initialized TTL when CONFIG_SYSCTL=n" has been added to the 4.6-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
ipv4: Fix non-initialized TTL when CONFIG_SYSCTL=n
to the 4.6-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:
ipv4-fix-non-initialized-ttl-when-config_sysctl-n.patch
and it can be found in the queue-4.6 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Fri Jun 17 08:34:39 PDT 2016
From: Ezequiel Garcia <[email protected]>
Date: Fri, 20 May 2016 13:21:10 -0300
Subject: ipv4: Fix non-initialized TTL when CONFIG_SYSCTL=n
From: Ezequiel Garcia <[email protected]>
[ Upstream commit 049bbf589ec651685205bd8ce73221fdd62345cf ]
Commit fa50d974d104 ("ipv4: Namespaceify ip_default_ttl sysctl knob") moves the default TTL assignment, and as side-effect IPv4 TTL now has a default value only if sysctl support is enabled (CONFIG_SYSCTL=y).
The sysctl_ip_default_ttl is fundamental for IP to work properly, as it provides the TTL to be used as default. The defautl TTL may be used in ip_selected_ttl, through the following flow:
ip_select_ttl
ip4_dst_hoplimit
net->ipv4.sysctl_ip_default_ttlThis commit fixes the issue by assigning net->ipv4.sysctl_ip_default_ttl in net_init_net, called during ipv4's initialization.
Without this commit, a kernel built without sysctl support will send all IP packets with zero TTL (unless a TTL is explicitly set, e.g. with setsockopt).
Given a similar issue might appear on the other knobs that were namespaceify, this commit also moves them.
--- net/ipv4/af_inet.c | 8 ++++++++ net/ipv4/sysctl_net_ipv4.c | 4 ---- 2 files changed, 8 insertions(+), 4 deletions(-)
net/ipv4/af_inet.c +8 -0
@@ -1660,6 +1660,14 @@ static __net_init int inet_init_net(stru*/ net->ipv4.ping_group_range.range[0 ] =make_kgid (&init_user_ns,1 ); net->ipv4.ping_group_range.range[1 ] =make_kgid (&init_user_ns,0 ); + +/* Default values for sysctl-controlled parameters. +* We set them here, in case sysctl is not compiled. +*/ + net->ipv4.sysctl_ip_default_ttl =IPDEFTTL ; + net->ipv4.sysctl_ip_dynaddr =0 ; + net->ipv4.sysctl_ip_early_demux =1 ; +return 0 ; }
net/ipv4/sysctl_net_ipv4.c +0 -4
@@ -988,10 +988,6 @@ static __net_init int ipv4_sysctl_init_nif (!net->ipv4.sysctl_local_reserved_ports) goto err_ports; - net->ipv4.sysctl_ip_default_ttl =IPDEFTTL ; - net->ipv4.sysctl_ip_dynaddr =0 ; - net->ipv4.sysctl_ip_early_demux =1 ; -return 0 ; err_ports:
Patches currently in stable-queue which might be from [email protected] are
queue-4.6/ipv4-fix-non-initialized-ttl-when-config_sysctl-n.patch