Patch "ip6_tunnel: disable caching when the traffic class is inherited" has been added to the 4.8-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
ip6_tunnel: disable caching when the traffic class is inherited
to the 4.8-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:
ip6_tunnel-disable-caching-when-the-traffic-class-is-inherited.patch
and it can be found in the queue-4.8 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 Thu Dec 8 07:19:12 CET 2016
From: Paolo Abeni <[email protected]>
Date: Wed, 16 Nov 2016 16:26:46 +0100
Subject: ip6_tunnel: disable caching when the traffic class is inherited
From: Paolo Abeni <[email protected]>
[ Upstream commit b5c2d49544e5930c96e2632a7eece3f4325a1888 ]
If an ip6 tunnel is configured to inherit the traffic class from the inner header, the dst_cache must be disabled or it will foul the policy routing.
The issue is apprently there since at leat Linux-2.6.12-rc2.
--- net/ipv6/ip6_tunnel.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-)
net/ipv6/ip6_tunnel.c +11 -2
@@ -1014,6 +1014,7 @@ int ip6_tnl_xmit(struct sk_buff *skb, stint mtu;unsigned int psh_hlen =sizeof (struct ipv6hdr ) + t->encap_hlen;unsigned int max_headroom = psh_hlen; +bool use_cache = false;int err =-1 ;/* NBMA tunnel */
@@ -1038,7 +1039,15 @@ int ip6_tnl_xmit(struct sk_buff *skb, stmemcpy (&fl6->daddr, addr6,sizeof (fl6->daddr));neigh_release (neigh); - }else if (!fl6->flowi6_mark) + }else if (!(t->parms.flags & + (IP6_TNL_F_USE_ORIG_TCLASS |IP6_TNL_F_USE_ORIG_FWMARK ))) { +/* enable the cache only only if the routing decision does +* not depend on the current inner header value +*/ + use_cache = true; + } + +if (use_cache) dst =dst_cache_get (&t->dst_cache);if (!ip6_tnl_xmit_ctl (t, &fl6->saddr, &fl6->daddr))
@@ -1113,7 +1122,7 @@ int ip6_tnl_xmit(struct sk_buff *skb, st skb = new_skb; } -if (!fl6->flowi6_mark && ndst) +if (use_cache && ndst)dst_cache_set_ip6 (&t->dst_cache, ndst, &fl6->saddr);skb_dst_set (skb, dst);
Patches currently in stable-queue which might be from [email protected] are
queue-4.8/ip6_tunnel-disable-caching-when-the-traffic-class-is-inherited.patch queue-4.8/ipv6-bump-genid-when-the-ifa_f_tentative-flag-is-clear.patch