mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-16 01:04:08 +08:00
Bluetooth: Don't lock sock inside l2cap_get_sock_by_scid()
Fix an locking issue with the new l2cap_att_channel(). l2cap_att_channel() was trying to lock a locked socket. Reported-by: Anderson Lizardo <anderson.lizardo@openbossa.org> Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
This commit is contained in:
parent
9f72c1d977
commit
280f294f7b
@ -594,7 +594,7 @@ static void l2cap_conn_start(struct l2cap_conn *conn)
|
||||
*/
|
||||
static struct sock *l2cap_get_sock_by_scid(int state, __le16 cid, bdaddr_t *src)
|
||||
{
|
||||
struct sock *s, *sk = NULL, *sk1 = NULL;
|
||||
struct sock *sk = NULL, *sk1 = NULL;
|
||||
struct hlist_node *node;
|
||||
|
||||
read_lock(&l2cap_sk_list.lock);
|
||||
@ -613,12 +613,10 @@ static struct sock *l2cap_get_sock_by_scid(int state, __le16 cid, bdaddr_t *src)
|
||||
sk1 = sk;
|
||||
}
|
||||
}
|
||||
s = node ? sk : sk1;
|
||||
if (s)
|
||||
bh_lock_sock(s);
|
||||
|
||||
read_unlock(&l2cap_sk_list.lock);
|
||||
|
||||
return s;
|
||||
return node ? sk : sk1;
|
||||
}
|
||||
|
||||
static void l2cap_le_conn_ready(struct l2cap_conn *conn)
|
||||
|
Loading…
Reference in New Issue
Block a user