diff options
author | David S. Miller <davem@davemloft.net> | 2011-03-31 18:59:10 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-03-31 18:59:10 -0700 |
commit | c100c8f4c3c6f2a407bdbaaad2c4f1062e6a473a (patch) | |
tree | bc4075ba65a4187ca46642589f5299cde399ae22 /net | |
parent | c37947459172a02691ccd48cb967e8b605d38c56 (diff) | |
download | lwn-c100c8f4c3c6f2a407bdbaaad2c4f1062e6a473a.tar.gz lwn-c100c8f4c3c6f2a407bdbaaad2c4f1062e6a473a.zip |
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 <davej@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/appletalk/ddp.c | 11 |
1 files changed, 6 insertions, 5 deletions
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; } |