summary refs log tree commit diff
path: root/net
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2016-01-15 04:56:56 -0800
committerDavid S. Miller <davem@davemloft.net>2016-01-15 15:07:23 -0500
commit34ae6a1aa0540f0f781dd265366036355fdc8930 (patch)
tree11df908434ac0da470b34a08fd254df1429c4e65 /net
parent113c74d83eef870e43a0d9279044e9d5435f0d07 (diff)
downloadlinux-34ae6a1aa0540f0f781dd265366036355fdc8930.tar.gz
ipv6: update skb->csum when CE mark is propagated
When a tunnel decapsulates the outer header, it has to comply
with RFC 6080 and eventually propagate CE mark into inner header.

It turns out IP6_ECN_set_ce() does not correctly update skb->csum
for CHECKSUM_COMPLETE packets, triggering infamous "hw csum failure"
messages and stack traces.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/ipv6/xfrm6_mode_tunnel.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv6/xfrm6_mode_tunnel.c b/net/ipv6/xfrm6_mode_tunnel.c
index f7fbdbabe50e..372855eeaf42 100644
--- a/net/ipv6/xfrm6_mode_tunnel.c
+++ b/net/ipv6/xfrm6_mode_tunnel.c
@@ -23,7 +23,7 @@ static inline void ipip6_ecn_decapsulate(struct sk_buff *skb)
 	struct ipv6hdr *inner_iph = ipipv6_hdr(skb);
 
 	if (INET_ECN_is_ce(XFRM_MODE_SKB_CB(skb)->tos))
-		IP6_ECN_set_ce(inner_iph);
+		IP6_ECN_set_ce(skb, inner_iph);
 }
 
 /* Add encapsulation header.