--- a/net/bluetooth/hci_conn.c +++ b/net/bluetooth/hci_conn.c @@ -1072,8 +1072,14 @@ static void hci_conn_unlink(struct hci_conn *conn) */ if ((child->type == SCO_LINK || child->type == ESCO_LINK) && - HCI_CONN_HANDLE_UNSET(child->handle)) - hci_conn_del(child); + HCI_CONN_HANDLE_UNSET(child->handle)) { + u8 reason = conn->abort_reason; + + if (!reason) + reason = HCI_ERROR_REMOTE_USER_TERM; + + hci_conn_failed(child, reason); + } } return;