kernel_optimize_test/net/ipv6
Daniel Lezcano 7d460db953 [IPV6]: Fix ip6_frag ctl
Alexey Dobriyan reported an oops when unsharing the network
indefinitely inside a loop. This is because the ip6_frag is not per
namespace while the ctls are.

That happens at the fragment timer expiration:
inet_frag_secret_rebuild function is called and this one restarts the
timer using the value stored inside the sysctl field.

        "mod_timer(&f->secret_timer, now + f->ctl->secret_interval);"

When the network is unshared, ip6_frag.ctl is initialized with the new
sysctl instances, but ip6_frag has only one instance. A race in this
case will appear because f->ctl can be modified during the read access
in the timer callback.

Until the ip6_frag is not per namespace, I discard the assignation to
the ctl field of ip6_frags in ip6_frag_sysctl_init when the network
namespace is not the init net.

Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-01-28 15:08:04 -08:00
..
netfilter [NETFILTER]: nf_conntrack: make print_conntrack function optional for l4protos 2008-01-28 15:02:42 -08:00
addrconf_core.c
addrconf.c [NETNS][IPV6]: inet6_addr - make ipv6_chk_home_addr namespace aware 2008-01-28 15:01:46 -08:00
addrlabel.c
af_inet6.c [NETNS][IPV6]: inet6_addr - check ipv6 address per namespace 2008-01-28 15:01:44 -08:00
ah6.c [IPSEC]: Move all calls to xfrm_audit_state_icvfail to xfrm_input 2008-01-28 15:00:10 -08:00
anycast.c [NETNS][IPV6]: inet6_addr - check ipv6 address per namespace 2008-01-28 15:01:44 -08:00
datagram.c [NETNS][IPV6]: inet6_addr - check ipv6 address per namespace 2008-01-28 15:01:44 -08:00
esp6.c [IPSEC]: Move all calls to xfrm_audit_state_icvfail to xfrm_input 2008-01-28 15:00:10 -08:00
exthdrs_core.c
exthdrs.c [NETNS][IPV6]: inet6_addr - make ipv6_chk_home_addr namespace aware 2008-01-28 15:01:46 -08:00
fib6_rules.c [NETNS]: Pass fib_rules_ops into default_pref method. 2008-01-28 15:01:22 -08:00
icmp.c [NETNS][IPV6]: inet6_addr - check ipv6 address per namespace 2008-01-28 15:01:44 -08:00
inet6_connection_sock.c
inet6_hashtables.c [NET]: prot_inuse cleanups and optimizations 2008-01-28 15:00:36 -08:00
ip6_fib.c [NETNS]: Add netns to nl_info structure. 2008-01-28 15:01:29 -08:00
ip6_flowlabel.c [NET]: Add some acquires/releases sparse annotations. 2008-01-28 15:00:31 -08:00
ip6_input.c
ip6_output.c [NETNS][IPV6]: inet6_addr - ipv6_get_ifaddr namespace aware 2008-01-28 15:01:45 -08:00
ip6_tunnel.c [NETNS][IPV6]: inet6_addr - check ipv6 address per namespace 2008-01-28 15:01:44 -08:00
ipcomp6.c
ipv6_sockglue.c [NET]: prot_inuse cleanups and optimizations 2008-01-28 15:00:36 -08:00
Kconfig
Makefile [IPV6]: Make the ipv6/sysctl_net_ipv6.c compilation cleaner 2008-01-28 14:56:29 -08:00
mcast.c [NET]: Add some acquires/releases sparse annotations. 2008-01-28 15:00:31 -08:00
mip6.c
ndisc.c [NETNS][IPV6]: inet6_addr - ipv6_get_ifaddr namespace aware 2008-01-28 15:01:45 -08:00
netfilter.c [NETFILTER]: constify nf_afinfo 2008-01-28 14:59:05 -08:00
proc.c [NET]: prot_inuse cleanups and optimizations 2008-01-28 15:00:36 -08:00
protocol.c
raw.c [NETNS][RAW]: Create the /proc/net/raw(6) in each namespace. 2008-01-28 15:02:07 -08:00
reassembly.c [IPV6]: Fix ip6_frag ctl 2008-01-28 15:08:04 -08:00
route.c [NETNS][DST] dst: pass the dst_ops as parameter to the gc functions 2008-01-28 15:02:46 -08:00
sit.c [IPV6] sit: Rebinding of SIT tunnels to other interfaces 2008-01-28 14:57:56 -08:00
sysctl_net_ipv6.c [NETNS][IPV6]: Make icmpv6_time sysctl per namespace. 2008-01-28 15:01:20 -08:00
tcp_ipv6.c [TCP]: Convert several length variable to unsigned. 2008-01-28 14:59:56 -08:00
tunnel6.c
udp_impl.h
udp.c [UDP]: Add memory accounting. 2008-01-28 15:00:19 -08:00
udplite.c [IPV6]: fix section mismatch warnings 2008-01-28 14:57:46 -08:00
xfrm6_input.c [IPSEC]: Fix transport-mode async resume on intput without netfilter 2008-01-28 15:00:10 -08:00
xfrm6_mode_beet.c
xfrm6_mode_ro.c
xfrm6_mode_transport.c
xfrm6_mode_tunnel.c [IPSEC]: Rename tunnel-mode functions to avoid collisions with tunnels 2008-01-28 14:59:18 -08:00
xfrm6_output.c
xfrm6_policy.c [NETNS][DST] dst: pass the dst_ops as parameter to the gc functions 2008-01-28 15:02:46 -08:00
xfrm6_state.c [IPV6]: Make xfrm6_init to return an error code. 2008-01-28 14:56:45 -08:00
xfrm6_tunnel.c