Skip to content
/ linux Public

Commit 84d041c

Browse files
mgrzeschikgregkh
authored andcommitted
Bluetooth: hci_sync: Fix hci_le_create_conn_sync
[ Upstream commit 2cabe7f ] While introducing hci_le_create_conn_sync the functionality of hci_connect_le was ported to hci_le_create_conn_sync including the disable of the scan before starting the connection. When this code was run non synchronously the immediate call that was setting the flag HCI_LE_SCAN_INTERRUPTED had an impact. Since the completion handler for the LE_SCAN_DISABLE was not immediately called. In the completion handler of the LE_SCAN_DISABLE event, this flag is checked to set the state of the hdev to DISCOVERY_STOPPED. With the synchronised approach the later setting of the HCI_LE_SCAN_INTERRUPTED flag has not the same effect. The completion handler would immediately fire in the LE_SCAN_DISABLE call, check for the flag, which is then not yet set and do nothing. To fix this issue and make the function call work as before, we move the setting of the flag HCI_LE_SCAN_INTERRUPTED before disabling the scan. Fixes: 8e8b92e ("Bluetooth: hci_sync: Add hci_le_create_conn_sync") Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent 874e739 commit 84d041c

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

net/bluetooth/hci_sync.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6578,8 +6578,8 @@ static int hci_le_create_conn_sync(struct hci_dev *hdev, void *data)
65786578
* state.
65796579
*/
65806580
if (hci_dev_test_flag(hdev, HCI_LE_SCAN)) {
6581-
hci_scan_disable_sync(hdev);
65826581
hci_dev_set_flag(hdev, HCI_LE_SCAN_INTERRUPTED);
6582+
hci_scan_disable_sync(hdev);
65836583
}
65846584

65856585
/* Update random address, but set require_privacy to false so

0 commit comments

Comments
 (0)