|
@@ -416,8 +416,10 @@ static void __sco_sock_close(struct sock *sk)
|
|
|
if (sco_pi(sk)->conn->hcon) {
|
|
if (sco_pi(sk)->conn->hcon) {
|
|
|
sk->sk_state = BT_DISCONN;
|
|
sk->sk_state = BT_DISCONN;
|
|
|
sco_sock_set_timer(sk, SCO_DISCONN_TIMEOUT);
|
|
sco_sock_set_timer(sk, SCO_DISCONN_TIMEOUT);
|
|
|
|
|
+ sco_conn_lock(sco_pi(sk)->conn);
|
|
|
hci_conn_drop(sco_pi(sk)->conn->hcon);
|
|
hci_conn_drop(sco_pi(sk)->conn->hcon);
|
|
|
sco_pi(sk)->conn->hcon = NULL;
|
|
sco_pi(sk)->conn->hcon = NULL;
|
|
|
|
|
+ sco_conn_unlock(sco_pi(sk)->conn);
|
|
|
} else
|
|
} else
|
|
|
sco_chan_del(sk, ECONNRESET);
|
|
sco_chan_del(sk, ECONNRESET);
|
|
|
break;
|
|
break;
|