Skip to content

Commit

Permalink
Bluetooth: fix bt_accept_dequeue() to work in process context
Browse files Browse the repository at this point in the history
No local_bh_disable is needed there once we run everything in process
context. The same goes for the replacement of bh_lock_sock() by
lock_sock().

Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
  • Loading branch information
Gustavo F. Padovan committed Dec 22, 2011
1 parent f1e91e1 commit 8a154a8
Showing 1 changed file with 4 additions and 7 deletions.
11 changes: 4 additions & 7 deletions net/bluetooth/af_bluetooth.c
Original file line number Diff line number Diff line change
Expand Up @@ -199,15 +199,14 @@ 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);

bh_lock_sock(sk);
lock_sock(sk);

/* FIXME: Is this check still needed */
if (sk->sk_state == BT_CLOSED) {
bh_unlock_sock(sk);
release_sock(sk);
bt_accept_unlink(sk);
continue;
}
Expand All @@ -218,14 +217,12 @@ struct sock *bt_accept_dequeue(struct sock *parent, struct socket *newsock)
if (newsock)
sock_graft(sk, newsock);

bh_unlock_sock(sk);
local_bh_enable();
release_sock(sk);
return sk;
}

bh_unlock_sock(sk);
release_sock(sk);
}
local_bh_enable();

return NULL;
}
Expand Down

0 comments on commit 8a154a8

Please sign in to comment.