summaryrefslogtreecommitdiff
path: root/net/appletalk
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2011-04-01 05:59:10 +0400
committerDavid S. Miller <davem@davemloft.net>2011-04-01 05:59:10 +0400
commitc100c8f4c3c6f2a407bdbaaad2c4f1062e6a473a (patch)
treebc4075ba65a4187ca46642589f5299cde399ae22 /net/appletalk
parentc37947459172a02691ccd48cb967e8b605d38c56 (diff)
downloadlinux-c100c8f4c3c6f2a407bdbaaad2c4f1062e6a473a.tar.xz
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/appletalk')
-rw-r--r--net/appletalk/ddp.c11
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;
}