Bluetooth: MGMT: Fix failing to MGMT_OP_ADD_UUID/MGMT_OP_REMOVE_UUID
These commands don't require the adapter to be up and running so don't
use hci_cmd_sync_queue which would check that flag, instead use
hci_cmd_sync_submit which would ensure mgmt_class_complete is set
properly regardless if any command was actually run or not.
Link: https://github.com/bluez/bluez/issues/809
Fixes: d883a4669a
("Bluetooth: hci_sync: Only allow hci_cmd_sync_queue if running")
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This commit is contained in:
parent
32868e126c
commit
6eb5fcc416
|
@ -2623,7 +2623,11 @@ static int add_uuid(struct sock *sk, struct hci_dev *hdev, void *data, u16 len)
|
||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = hci_cmd_sync_queue(hdev, add_uuid_sync, cmd, mgmt_class_complete);
|
/* MGMT_OP_ADD_UUID don't require adapter the UP/Running so use
|
||||||
|
* hci_cmd_sync_submit instead of hci_cmd_sync_queue.
|
||||||
|
*/
|
||||||
|
err = hci_cmd_sync_submit(hdev, add_uuid_sync, cmd,
|
||||||
|
mgmt_class_complete);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
mgmt_pending_free(cmd);
|
mgmt_pending_free(cmd);
|
||||||
goto failed;
|
goto failed;
|
||||||
|
@ -2717,8 +2721,11 @@ update_class:
|
||||||
goto unlock;
|
goto unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = hci_cmd_sync_queue(hdev, remove_uuid_sync, cmd,
|
/* MGMT_OP_REMOVE_UUID don't require adapter the UP/Running so use
|
||||||
mgmt_class_complete);
|
* hci_cmd_sync_submit instead of hci_cmd_sync_queue.
|
||||||
|
*/
|
||||||
|
err = hci_cmd_sync_submit(hdev, remove_uuid_sync, cmd,
|
||||||
|
mgmt_class_complete);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
mgmt_pending_free(cmd);
|
mgmt_pending_free(cmd);
|
||||||
|
|
||||||
|
@ -2784,8 +2791,11 @@ static int set_dev_class(struct sock *sk, struct hci_dev *hdev, void *data,
|
||||||
goto unlock;
|
goto unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = hci_cmd_sync_queue(hdev, set_class_sync, cmd,
|
/* MGMT_OP_SET_DEV_CLASS don't require adapter the UP/Running so use
|
||||||
mgmt_class_complete);
|
* hci_cmd_sync_submit instead of hci_cmd_sync_queue.
|
||||||
|
*/
|
||||||
|
err = hci_cmd_sync_submit(hdev, set_class_sync, cmd,
|
||||||
|
mgmt_class_complete);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
mgmt_pending_free(cmd);
|
mgmt_pending_free(cmd);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue