[NETFILTER]: Do not be clever about SKB ownership in ip_ct_gather_frags().
authorDavid S. Miller <davem@davemloft.net>
Thu, 19 May 2005 19:36:33 +0000 (12:36 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 19 May 2005 19:36:33 +0000 (12:36 -0700)
Just do an skb_orphan() and be done with it.
Based upon discussions with Herbert Xu on netdev.

Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/netfilter/ip_conntrack_core.c

index 28d9425..09e8246 100644 (file)
@@ -940,37 +940,25 @@ void ip_ct_refresh_acct(struct ip_conntrack *ct,
 struct sk_buff *
 ip_ct_gather_frags(struct sk_buff *skb, u_int32_t user)
 {
-       struct sock *sk = skb->sk;
 #ifdef CONFIG_NETFILTER_DEBUG
        unsigned int olddebug = skb->nf_debug;
 #endif
 
-       if (sk) {
-               sock_hold(sk);
-               skb_orphan(skb);
-       }
+       skb_orphan(skb);
 
        local_bh_disable(); 
        skb = ip_defrag(skb, user);
        local_bh_enable();
 
-       if (!skb) {
-               if (sk)
-                       sock_put(sk);
-               return skb;
-       }
-
-       if (sk) {
-               skb_set_owner_w(skb, sk);
-               sock_put(sk);
-       }
-
-       ip_send_check(skb->nh.iph);
-       skb->nfcache |= NFC_ALTERED;
+       if (skb) {
+               ip_send_check(skb->nh.iph);
+               skb->nfcache |= NFC_ALTERED;
 #ifdef CONFIG_NETFILTER_DEBUG
-       /* Packet path as if nothing had happened. */
-       skb->nf_debug = olddebug;
+               /* Packet path as if nothing had happened. */
+               skb->nf_debug = olddebug;
 #endif
+       }
+
        return skb;
 }