Skip to content

Commit

Permalink
Bluetooth: Don't check source address in SCO bind function
Browse files Browse the repository at this point in the history
Checking the source address in SCO bind function will prevent from
having an incoming and outgoing SCO socket. However that might be
needed in case of multiple SCO connections on a single device.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo Padovan <gustavo@padovan.org>
  • Loading branch information
Marcel Holtmann authored and Gustavo Padovan committed May 9, 2012
1 parent fc50744 commit 8ed21f7
Showing 1 changed file with 6 additions and 10 deletions.
16 changes: 6 additions & 10 deletions net/bluetooth/sco.c
Original file line number Diff line number Diff line change
Expand Up @@ -462,7 +462,6 @@ static int sco_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_le
{
struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
struct sock *sk = sock->sk;
bdaddr_t *src = &sa->sco_bdaddr;
int err = 0;

BT_DBG("sk %p %s", sk, batostr(&sa->sco_bdaddr));
Expand All @@ -477,17 +476,14 @@ static int sco_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_le
goto done;
}

write_lock(&sco_sk_list.lock);

if (bacmp(src, BDADDR_ANY) && __sco_get_sock_by_addr(src)) {
err = -EADDRINUSE;
} else {
/* Save source address */
bacpy(&bt_sk(sk)->src, &sa->sco_bdaddr);
sk->sk_state = BT_BOUND;
if (sk->sk_type != SOCK_SEQPACKET) {
err = -EINVAL;
goto done;
}

write_unlock(&sco_sk_list.lock);
bacpy(&bt_sk(sk)->src, &sa->sco_bdaddr);

sk->sk_state = BT_BOUND;

done:
release_sock(sk);
Expand Down

0 comments on commit 8ed21f7

Please sign in to comment.