|
|
@@ -3357,6 +3357,12 @@ static void hci_cmd_complete_evt(struct hci_dev *hdev, struct sk_buff *skb,
|
|
|
hci_req_cmd_complete(hdev, *opcode, *status, req_complete,
|
|
|
req_complete_skb);
|
|
|
|
|
|
+ if (hci_dev_test_flag(hdev, HCI_CMD_PENDING)) {
|
|
|
+ bt_dev_err(hdev,
|
|
|
+ "unexpected event for opcode 0x%4.4x", *opcode);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
if (atomic_read(&hdev->cmd_cnt) && !skb_queue_empty(&hdev->cmd_q))
|
|
|
queue_work(hdev->workqueue, &hdev->cmd_work);
|
|
|
}
|
|
|
@@ -3464,6 +3470,12 @@ static void hci_cmd_status_evt(struct hci_dev *hdev, struct sk_buff *skb,
|
|
|
hci_req_cmd_complete(hdev, *opcode, ev->status, req_complete,
|
|
|
req_complete_skb);
|
|
|
|
|
|
+ if (hci_dev_test_flag(hdev, HCI_CMD_PENDING)) {
|
|
|
+ bt_dev_err(hdev,
|
|
|
+ "unexpected event for opcode 0x%4.4x", *opcode);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
if (atomic_read(&hdev->cmd_cnt) && !skb_queue_empty(&hdev->cmd_q))
|
|
|
queue_work(hdev->workqueue, &hdev->cmd_work);
|
|
|
}
|