]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/netfilter/core.c
[SKBUFF]: Keep track of writable header len of headerless clones
[linux-2.6-omap-h63xx.git] / net / netfilter / core.c
index a84478ee2ded4c4b4a6888794ff05b70a3204cdc..3aaabec70d191ea485b3f62f8b018a602abab0dd 100644 (file)
@@ -203,7 +203,9 @@ int skb_make_writable(struct sk_buff **pskb, unsigned int writable_len)
                return 0;
 
        /* Not exclusive use of packet?  Must copy. */
-       if (skb_shared(*pskb) || skb_cloned(*pskb))
+       if (skb_cloned(*pskb) && !skb_clone_writable(*pskb, writable_len))
+               goto copy_skb;
+       if (skb_shared(*pskb))
                goto copy_skb;
 
        return pskb_may_pull(*pskb, writable_len);