mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 18:41:58 +09:00
Bluetooth: ISO: Fix handling of listen for unicast
[ Upstream commite0275ea521] iso_listen_cis shall only return -EADDRINUSE if the listening socket has the destination set to BDADDR_ANY otherwise if the destination is set to a specific address it is for broadcast which shall be ignored. Fixes:f764a6c2c1("Bluetooth: ISO: Add broadcast support") Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
c201d944bc
commit
6bfc4c7043
@@ -458,7 +458,7 @@ drop:
|
||||
}
|
||||
|
||||
/* -------- Socket interface ---------- */
|
||||
static struct sock *__iso_get_sock_listen_by_addr(bdaddr_t *ba)
|
||||
static struct sock *__iso_get_sock_listen_by_addr(bdaddr_t *src, bdaddr_t *dst)
|
||||
{
|
||||
struct sock *sk;
|
||||
|
||||
@@ -466,7 +466,10 @@ static struct sock *__iso_get_sock_listen_by_addr(bdaddr_t *ba)
|
||||
if (sk->sk_state != BT_LISTEN)
|
||||
continue;
|
||||
|
||||
if (!bacmp(&iso_pi(sk)->src, ba))
|
||||
if (bacmp(&iso_pi(sk)->dst, dst))
|
||||
continue;
|
||||
|
||||
if (!bacmp(&iso_pi(sk)->src, src))
|
||||
return sk;
|
||||
}
|
||||
|
||||
@@ -910,7 +913,7 @@ static int iso_listen_cis(struct sock *sk)
|
||||
|
||||
write_lock(&iso_sk_list.lock);
|
||||
|
||||
if (__iso_get_sock_listen_by_addr(&iso_pi(sk)->src))
|
||||
if (__iso_get_sock_listen_by_addr(&iso_pi(sk)->src, &iso_pi(sk)->dst))
|
||||
err = -EADDRINUSE;
|
||||
|
||||
write_unlock(&iso_sk_list.lock);
|
||||
|
||||
Reference in New Issue
Block a user