--- x/net/bluetooth/hci_request.c +++ y/net/bluetooth/hci_request.c @@ -102,6 +102,7 @@ void hci_req_sync_complete(struct hci_de { bt_dev_dbg(hdev, "result 0x%2.2x", result); + hci_req_sync_lock(hdev); if (hdev->req_status == HCI_REQ_PEND) { hdev->req_result = result; hdev->req_status = HCI_REQ_DONE; @@ -111,6 +112,7 @@ void hci_req_sync_complete(struct hci_de } wake_up_interruptible(&hdev->req_wait_q); } + hci_req_sync_unlock(hdev); } /* Execute request and wait for completion. */