X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=net%2Fipv6%2Fsit.c;h=eb20bb690abd736e6699f1af7987cb8a1287d3c3;hb=3f5f4346b6d3c8bc33780a941da2473c4be2c989;hp=1efa95a99f4533198e353f713f7287cb522ec55d;hpb=48a7afe314bfc4d7f50e1608632f503dbba7e013;p=linux-2.6 diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c index 1efa95a99f..eb20bb690a 100644 --- a/net/ipv6/sit.c +++ b/net/ipv6/sit.c @@ -532,7 +532,8 @@ static int ipip6_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) */ max_headroom = LL_RESERVED_SPACE(tdev)+sizeof(struct iphdr); - if (skb_headroom(skb) < max_headroom || skb_cloned(skb) || skb_shared(skb)) { + if (skb_headroom(skb) < max_headroom || skb_shared(skb) || + (skb_cloned(skb) && !skb_clone_writable(skb, 0))) { struct sk_buff *new_skb = skb_realloc_headroom(skb, max_headroom); if (!new_skb) { ip_rt_put(rt);