X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=net%2Fipv6%2Fsit.c;h=eb20bb690abd736e6699f1af7987cb8a1287d3c3;hb=40b42f1ebf653cd72c32eb1a1a0b9fea2dfbfd7d;hp=1efa95a99f4533198e353f713f7287cb522ec55d;hpb=b928ed56182b8ea59bd43f2d5b865f13a54d5719;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);