diff options
author | Paolo Abeni <pabeni@redhat.com> | 2016-02-12 15:43:54 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-02-16 20:21:48 -0500 |
commit | 607f725f6f7d5ec3759fbc16224afb60e2152a5b (patch) | |
tree | cbd77f4026a4388bab852d0f78d0452f22a82157 /net/ipv6/Kconfig | |
parent | 911362c70df5b766c243dc297fadeaced786ffd8 (diff) | |
download | op-kernel-dev-607f725f6f7d5ec3759fbc16224afb60e2152a5b.zip op-kernel-dev-607f725f6f7d5ec3759fbc16224afb60e2152a5b.tar.gz |
net: replace dst_cache ip6_tunnel implementation with the generic one
This also fix a potential race into the existing tunnel code, which
could lead to the wrong dst to be permanenty cached:
CPU1: CPU2:
<xmit on ip6_tunnel>
<cache lookup fails>
dst = ip6_route_output(...)
<tunnel params are changed via nl>
dst_cache_reset() // no effect,
// the cache is empty
dst_cache_set() // the wrong dst
// is permanenty stored
// into the cache
With the new dst implementation the above race is not possible
since the first cache lookup after dst_cache_reset will fail due
to the timestamp check
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Suggested-and-acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/Kconfig')
-rw-r--r-- | net/ipv6/Kconfig | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/ipv6/Kconfig b/net/ipv6/Kconfig index 40c8975..11e875f 100644 --- a/net/ipv6/Kconfig +++ b/net/ipv6/Kconfig @@ -207,6 +207,7 @@ config IPV6_NDISC_NODETYPE config IPV6_TUNNEL tristate "IPv6: IP-in-IPv6 tunnel (RFC2473)" select INET6_TUNNEL + select DST_CACHE ---help--- Support for IPv6-in-IPv6 and IPv4-in-IPv6 tunnels described in RFC 2473. |