]> err.no Git - linux-2.6/blobdiff - net/ipv4/ip_output.c
Automatic merge of /spare/repo/netdev-2.6 branch starfire
[linux-2.6] / net / ipv4 / ip_output.c
index daebd93fd8a06b648bbc725b86af47a01040b741..760dc8238d653e74351d30aa6fbeec6efc3c21d9 100644 (file)
@@ -490,6 +490,14 @@ int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff*))
                        /* Partially cloned skb? */
                        if (skb_shared(frag))
                                goto slow_path;
+
+                       BUG_ON(frag->sk);
+                       if (skb->sk) {
+                               sock_hold(skb->sk);
+                               frag->sk = skb->sk;
+                               frag->destructor = sock_wfree;
+                               skb->truesize -= frag->truesize;
+                       }
                }
 
                /* Everything is OK. Generate! */