|
@@ -807,6 +807,12 @@ static int set_powered(struct sock *sk, struct hci_dev *hdev, void *data,
|
|
|
|
|
|
hci_dev_lock(hdev);
|
|
|
|
|
|
+ if (mgmt_pending_find(MGMT_OP_SET_POWERED, hdev)) {
|
|
|
+ err = cmd_status(sk, hdev->id, MGMT_OP_SET_POWERED,
|
|
|
+ MGMT_STATUS_BUSY);
|
|
|
+ goto failed;
|
|
|
+ }
|
|
|
+
|
|
|
if (test_and_clear_bit(HCI_AUTO_OFF, &hdev->dev_flags)) {
|
|
|
cancel_delayed_work(&hdev->power_off);
|
|
|
|
|
@@ -823,12 +829,6 @@ static int set_powered(struct sock *sk, struct hci_dev *hdev, void *data,
|
|
|
goto failed;
|
|
|
}
|
|
|
|
|
|
- if (mgmt_pending_find(MGMT_OP_SET_POWERED, hdev)) {
|
|
|
- err = cmd_status(sk, hdev->id, MGMT_OP_SET_POWERED,
|
|
|
- MGMT_STATUS_BUSY);
|
|
|
- goto failed;
|
|
|
- }
|
|
|
-
|
|
|
cmd = mgmt_pending_add(sk, MGMT_OP_SET_POWERED, hdev, data, len);
|
|
|
if (!cmd) {
|
|
|
err = -ENOMEM;
|