X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=net%2Fipv4%2Fipip.c;h=396437242a1b36186db17ff5aaa1bf5d60a1734b;hb=a9417357cff6027f9d6b1740f821baa59f2381f4;hp=ebd2f2d532f66bd1e57d173cde001026da1527dd;hpb=c6799ade4ae04b53a5f677e5289116155ff01574;p=linux-2.6 diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c index ebd2f2d532..396437242a 100644 --- a/net/ipv4/ipip.c +++ b/net/ipv4/ipip.c @@ -595,7 +595,8 @@ static int ipip_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);