From ced80f74be66b4e0cf9a2badbf0a9a15dc81ae48 Mon Sep 17 00:00:00 2001 From: Andrei Emeltchenko Date: Mon, 24 Jan 2011 10:53:24 +0200 Subject: [PATCH] --- yaml --- r: 237330 b: refs/heads/master c: d37f50e19094862a5d60d79637d6f4dbdc42f4f1 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/bluetooth/af_bluetooth.c | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index e172e821fcfd..faefccfc1e77 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5a08eccedaa1e12b74cf3afea9e11a9aefc29f73 +refs/heads/master: d37f50e19094862a5d60d79637d6f4dbdc42f4f1 diff --git a/trunk/net/bluetooth/af_bluetooth.c b/trunk/net/bluetooth/af_bluetooth.c index a6732b576a52..2abfe2f30453 100644 --- a/trunk/net/bluetooth/af_bluetooth.c +++ b/trunk/net/bluetooth/af_bluetooth.c @@ -199,14 +199,15 @@ struct sock *bt_accept_dequeue(struct sock *parent, struct socket *newsock) BT_DBG("parent %p", parent); + local_bh_disable(); list_for_each_safe(p, n, &bt_sk(parent)->accept_q) { sk = (struct sock *) list_entry(p, struct bt_sock, accept_q); - lock_sock(sk); + bh_lock_sock(sk); /* FIXME: Is this check still needed */ if (sk->sk_state == BT_CLOSED) { - release_sock(sk); + bh_unlock_sock(sk); bt_accept_unlink(sk); continue; } @@ -216,12 +217,16 @@ struct sock *bt_accept_dequeue(struct sock *parent, struct socket *newsock) bt_accept_unlink(sk); if (newsock) sock_graft(sk, newsock); - release_sock(sk); + + bh_unlock_sock(sk); + local_bh_enable(); return sk; } - release_sock(sk); + bh_unlock_sock(sk); } + local_bh_enable(); + return NULL; } EXPORT_SYMBOL(bt_accept_dequeue);