Thread (30 messages) flat view 30 messages, 6 authors, 2011-03-22

Re: [held lock freed] Re: [GIT] Networking

From: Eric Dumazet <hidden>
Date: 2011-03-21 14:56:19
Also in: lkml

Le lundi 21 mars 2011 à 15:50 +0100, Arnd Bergmann a écrit :
On Monday 21 March 2011, Eric Dumazet wrote:
quoted
[PATCH] ipx: fix ipx_release()

Commit b0d0d915d1d1a0 (remove the BKL) added a regression, because
sock_put() can free memory while we are going to use it later.

Fix is to delay sock_put() after release_sock().

Reported-by: Ingo Molnar <redacted>
Signed-off-by: Eric Dumazet <redacted>
Cc: Arnd Bergmann <arnd@arndb.de>
Your fix looks good, thanks Eric!

Acked-by: Arnd Bergmann <arnd@arndb.de>

I believe I made the same mistake in atalk_release and x25_release:

8<------------
net: fix atalk_release and x25_release

The recent BKL removal has introduced a use-after-free problem
in multiple network protocols. This fixes the problem in appletalk
and x25 by ensuring that we call the final sock_put() after
releasing the socket lock.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
quoted hunk ↗ jump to hunk
diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
index 4680b1e..b2cf1db 100644
--- a/net/x25/af_x25.c
+++ b/net/x25/af_x25.c
@@ -669,8 +669,8 @@ static int x25_release(struct socket *sock)
 
 	sock_orphan(sk);
 out:
-	release_sock(sk);
 	sock_put(sk);
+	release_sock(sk);
 	return 0;
 }
 
Hmm, x25_release() looks fine, I believe no fix is needed.



Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help