Bluetooth: MGMT: Fix failing to MGMT_OP_ADD_UUID/MGMT_OP_REMOVE_UUID
[ Upstream commit 6eb5fcc416f127f220b9177a5c9ae751cac1cda8 ] 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: d883a4669a1d ("Bluetooth: hci_sync: Only allow hci_cmd_sync_queue if running") Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
62e3a7cbd8
commit
882d614ac6
@ -2616,7 +2616,11 @@ static int add_uuid(struct sock *sk, struct hci_dev *hdev, void *data, u16 len)
|
||||
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) {
|
||||
mgmt_pending_free(cmd);
|
||||
goto failed;
|
||||
@ -2710,8 +2714,11 @@ update_class:
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
err = hci_cmd_sync_queue(hdev, remove_uuid_sync, cmd,
|
||||
mgmt_class_complete);
|
||||
/* MGMT_OP_REMOVE_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, remove_uuid_sync, cmd,
|
||||
mgmt_class_complete);
|
||||
if (err < 0)
|
||||
mgmt_pending_free(cmd);
|
||||
|
||||
@ -2777,8 +2784,11 @@ static int set_dev_class(struct sock *sk, struct hci_dev *hdev, void *data,
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
err = hci_cmd_sync_queue(hdev, set_class_sync, cmd,
|
||||
mgmt_class_complete);
|
||||
/* MGMT_OP_SET_DEV_CLASS 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, set_class_sync, cmd,
|
||||
mgmt_class_complete);
|
||||
if (err < 0)
|
||||
mgmt_pending_free(cmd);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user