diff options
author | David Miller <davem@davemloft.net> | 2009-12-02 16:01:04 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-12-03 21:15:01 -0800 |
commit | 768db3901820f355efb158c6913ecdb19bbfd9ed (patch) | |
tree | 85dd89e14da7940a2e937176179fb34fd33d29d1 | |
parent | b260d762f963bf8d518c28b3524dca40af5d416e (diff) |
net: Fix thinko in backport of skb destructor fix.
As noticed by Oliver Hartkopp, the backport of the
'net: Partially allow skb destructors to be used on receive path'
(2.6.30.y commit: 172570a224fe66d560c097e48fca15b620c76e72,
upstream commit: d55d87fdff8252d0e2f7c28c2d443aee17e9d70f)
was buggy.
It should have added an skb_orphan() call to both skb_set_owner_w()
and skb_set_owner_r(). Instead it added two calls to skb_set_owner_r().
This fixes it up.
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | include/net/sock.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/net/sock.h b/include/net/sock.h index 9bc2c830b5a..cda38015fca 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -1223,6 +1223,7 @@ static inline int skb_copy_to_page(struct sock *sk, char __user *from, static inline void skb_set_owner_w(struct sk_buff *skb, struct sock *sk) { + skb_orphan(skb); sock_hold(sk); skb->sk = sk; skb->destructor = sock_wfree; @@ -1232,7 +1233,6 @@ static inline void skb_set_owner_w(struct sk_buff *skb, struct sock *sk) static inline void skb_set_owner_r(struct sk_buff *skb, struct sock *sk) { skb_orphan(skb); - skb_orphan(skb); skb->sk = sk; skb->destructor = sock_rfree; atomic_add(skb->truesize, &sk->sk_rmem_alloc); |