Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8be58932 authored by David S. Miller's avatar David S. Miller
Browse files

[NETFILTER]: Do not be clever about SKB ownership in ip_ct_gather_frags().



Just do an skb_orphan() and be done with it.
Based upon discussions with Herbert Xu on netdev.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d9fa0f39
Loading
Loading
Loading
Loading
+8 −20
Original line number Diff line number Diff line
@@ -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);
	}

	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);
	}

	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;
#endif
	}

	return skb;
}