ipv4: Fix non-initialized TTL when CONFIG_SYSCTL=n
authorEzequiel Garcia <ezequiel@vanguardiasur.com.ar>
Fri, 20 May 2016 16:21:10 +0000 (13:21 -0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 23 May 2016 21:32:06 +0000 (14:32 -0700)
commit049bbf589ec651685205bd8ce73221fdd62345cf
tree7ffa03d58de9feb7251a6284067247b45e4580b5
parent2ece068e1b1d6e76ecd07e04b027013e931287ff
ipv4: Fix non-initialized TTL when CONFIG_SYSCTL=n

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_ttl

This 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.

Fixes: fa50d974d104 ("ipv4: Namespaceify ip_default_ttl sysctl knob")
Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/af_inet.c
net/ipv4/sysctl_net_ipv4.c