--- x/net/bluetooth/hci_core.c +++ y/net/bluetooth/hci_core.c @@ -3782,13 +3782,18 @@ static void hci_acldata_packet(struct hc hci_dev_lock(hdev); conn = hci_conn_hash_lookup_handle(hdev, handle); + if (conn) + hci_conn_get(conn); hci_dev_unlock(hdev); if (conn) { hci_conn_enter_active_mode(conn, BT_POWER_FORCE_ACTIVE_OFF); + hci_req_sync_lock(hdev); /* Send to upper protocol */ l2cap_recv_acldata(conn, skb, flags); + hci_req_sync_unlock(hdev); + hci_conn_put(conn); return; } else { bt_dev_err(hdev, "ACL packet for unknown connection handle %d",