Bluetooth: Reset more state when cancelling a sync command
Resetting the timers and cmd_cnt means that we assume the device will be in a good state after the sync command finishes. Without this a chain of synchronous commands might get stuck if one of them is cancelled. Signed-off-by: Benjamin Berg <bberg@redhat.com> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This commit is contained in:
committed by
Luiz Augusto von Dentz
parent
dbf6811abb
commit
ae422391e1
@@ -118,6 +118,11 @@ void hci_req_sync_cancel(struct hci_dev *hdev, int err)
|
|||||||
if (hdev->req_status == HCI_REQ_PEND) {
|
if (hdev->req_status == HCI_REQ_PEND) {
|
||||||
hdev->req_result = err;
|
hdev->req_result = err;
|
||||||
hdev->req_status = HCI_REQ_CANCELED;
|
hdev->req_status = HCI_REQ_CANCELED;
|
||||||
|
|
||||||
|
cancel_delayed_work_sync(&hdev->cmd_timer);
|
||||||
|
cancel_delayed_work_sync(&hdev->ncmd_timer);
|
||||||
|
atomic_set(&hdev->cmd_cnt, 1);
|
||||||
|
|
||||||
wake_up_interruptible(&hdev->req_wait_q);
|
wake_up_interruptible(&hdev->req_wait_q);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user