--- x/net/bluetooth/sco.c +++ y/net/bluetooth/sco.c @@ -434,31 +434,9 @@ static void __sco_sock_close(struct sock case BT_LISTEN: sco_sock_cleanup_listen(sk); break; - - case BT_CONNECTED: - case BT_CONFIG: - if (sco_pi(sk)->conn->hcon) { - sk->sk_state = BT_DISCONN; - sco_sock_set_timer(sk, SCO_DISCONN_TIMEOUT); - sco_conn_lock(sco_pi(sk)->conn); - hci_conn_drop(sco_pi(sk)->conn->hcon); - sco_pi(sk)->conn->hcon = NULL; - sco_conn_unlock(sco_pi(sk)->conn); - } else - sco_chan_del(sk, ECONNRESET); - break; - - case BT_CONNECT2: - case BT_CONNECT: - case BT_DISCONN: - sco_chan_del(sk, ECONNRESET); - break; - - default: - sock_set_flag(sk, SOCK_ZAPPED); - break; } + sco_chan_del(sk, ECONNRESET); } /* Must be called on unlocked socket. */