]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - net/ipv6/ip6_tunnel.c
[NET]: Avoid copying writable clones in tunnel drivers
[net-next-2.6.git] / net / ipv6 / ip6_tunnel.c
index a0902fbdb4e1ebfa71ee3f4f4d349b0735e923e2..281aee42d3f0d9c35e26c1dac4863f59628c8b62 100644 (file)
@@ -883,8 +883,8 @@ static int ip6_tnl_xmit2(struct sk_buff *skb,
         */
        max_headroom += LL_RESERVED_SPACE(tdev);
 
-       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;
 
                if (!(new_skb = skb_realloc_headroom(skb, max_headroom)))