From: David Miller Date: Thu, 3 Dec 2009 00:01:04 +0000 (-0800) Subject: net: Fix thinko in backport of skb destructor fix. X-Git-Tag: v2.6.30.10~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=768db3901820f355efb158c6913ecdb19bbfd9ed;p=thirdparty%2Fkernel%2Fstable.git 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 Signed-off-by: Greg Kroah-Hartman --- diff --git a/include/net/sock.h b/include/net/sock.h index 9bc2c830b5a43..cda38015fcae7 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; @@ -1231,7 +1232,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;