Skip to content

Commit

Permalink
[NETFILTER]: Do not be clever about SKB ownership in ip_ct_gather_fra…
Browse files Browse the repository at this point in the history
…gs().

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>
  • Loading branch information
David S. Miller committed May 19, 2005
1 parent d9fa0f3 commit 8be5893
Showing 1 changed file with 8 additions and 20 deletions.
28 changes: 8 additions & 20 deletions net/ipv4/netfilter/ip_conntrack_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down

0 comments on commit 8be5893

Please sign in to comment.