]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Bluetooth: hci_sync: Fix scan state after PA Sync has been established
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Thu, 24 Jul 2025 20:43:18 +0000 (16:43 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Aug 2025 14:34:45 +0000 (16:34 +0200)
[ Upstream commit ca88be1a2725a42f8dbad579181611d9dcca8e88 ]

Passive scanning is used to program the address of the peer to be
synchronized, so once HCI_EV_LE_PA_SYNC_ESTABLISHED is received it
needs to be updated after clearing HCI_PA_SYNC then call
hci_update_passive_scan_sync to return it to its original state.

Fixes: 6d0417e4e1cf ("Bluetooth: hci_conn: Fix not setting conn_timeout for Broadcast Receiver")
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/bluetooth/hci_sync.c

index 7938c004071c497d87cda684f5852f1f05d77bad..6c3218bac116c5e03ec2c89b5670b073c6588fbc 100644 (file)
@@ -6985,8 +6985,6 @@ static void create_pa_complete(struct hci_dev *hdev, void *data, int err)
 
        hci_dev_lock(hdev);
 
-       hci_dev_clear_flag(hdev, HCI_PA_SYNC);
-
        if (!hci_conn_valid(hdev, conn))
                clear_bit(HCI_CONN_CREATE_PA_SYNC, &conn->flags);
 
@@ -7080,6 +7078,11 @@ static int hci_le_pa_create_sync(struct hci_dev *hdev, void *data)
                __hci_cmd_sync_status(hdev, HCI_OP_LE_PA_CREATE_SYNC_CANCEL,
                                      0, NULL, HCI_CMD_TIMEOUT);
 
+       hci_dev_clear_flag(hdev, HCI_PA_SYNC);
+
+       /* Update passive scan since HCI_PA_SYNC flag has been cleared */
+       hci_update_passive_scan_sync(hdev);
+
        return err;
 }