Skip to contentSkip to conversation

Patch "ip6_tunnel: Clear IP6CB in ip6tunnel_xmit()" has been added to the 4.8-stable tree

PATCH [email protected] 1 participant 1 message Nov 18, 2016

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

ip6_tunnel: Clear IP6CB in ip6tunnel_xmit()

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-clear-ip6cb-in-ip6tunnel_xmit.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 Fri Nov 18 11:35:46 CET 2016

From: Eli Cooper <[email protected]>
Date: Tue, 1 Nov 2016 23:45:12 +0800
Subject: ip6_tunnel: Clear IP6CB in ip6tunnel_xmit()

From: Eli Cooper <[email protected]>

[ Upstream commit 23f4ffedb7d751c7e298732ba91ca75d224bc1a6 ]

skb->cb may contain data from previous layers. In the observed scenario, the garbage data were misinterpreted as IP6CB(skb)->frag_max_size, so that small packets sent through the tunnel are mistakenly fragmented.

This patch unconditionally clears the control buffer in ip6tunnel_xmit(), which affects ip6_tunnel, ip6_udp_tunnel and ip6_gre. Currently none of these tunnels set IP6CB(skb)->flags, otherwise it needs to be done earlier.

---
 include/net/ip6_tunnel.h |    1 +
 1 file changed, 1 insertion(+)
include/net/ip6_tunnel.h +1 -0
@@ -145,6 +145,7 @@ static inline void ip6tunnel_xmit(struct
 {
 	int pkt_len, err;
 
+	memset(skb->cb, 0, sizeof(struct inet6_skb_parm));
 	pkt_len = skb->len - skb_inner_network_offset(skb);
 	err = ip6_local_out(dev_net(skb_dst(skb)->dev), sk, skb);
 	if (unlikely(net_xmit_eval(err)))

Patches currently in stable-queue which might be from [email protected] are

queue-4.8/ip6_tunnel-clear-ip6cb-in-ip6tunnel_xmit.patch