From: David S. Miller Date: Fri, 1 Apr 2011 01:59:10 +0000 (-0700) Subject: appletalk: Fix OOPS in atalk_release(). X-Git-Tag: firefly_0821_release~7613^2~1666^2~25 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=c100c8f4c3c6f2a407bdbaaad2c4f1062e6a473a;p=firefly-linux-kernel-4.4.55.git appletalk: Fix OOPS in atalk_release(). Commit 60d9f461a20ba59219fdcdc30cbf8e3a4ad3f625 ("appletalk: remove the BKL") added a dereference of "sk" before checking for NULL in atalk_release(). Guard the code block completely, rather than partially, with the NULL check. Reported-by: Dave Jones Signed-off-by: David S. Miller --- diff --git a/net/appletalk/ddp.c b/net/appletalk/ddp.c index 206e771e82d1..956a5302002a 100644 --- a/net/appletalk/ddp.c +++ b/net/appletalk/ddp.c @@ -1051,16 +1051,17 @@ static int atalk_release(struct socket *sock) { struct sock *sk = sock->sk; - sock_hold(sk); - lock_sock(sk); if (sk) { + sock_hold(sk); + lock_sock(sk); + sock_orphan(sk); sock->sk = NULL; atalk_destroy_socket(sk); - } - release_sock(sk); - sock_put(sk); + release_sock(sk); + sock_put(sk); + } return 0; }