]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Bluetooth: hci_conn: Fix connection cleanup with BIG with 2 or more BIS
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Wed, 22 Oct 2025 20:29:41 +0000 (16:29 -0400)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Fri, 24 Oct 2025 14:31:41 +0000 (10:31 -0400)
This fixes bis_cleanup not considering connections in BT_OPEN state
before attempting to remove the BIG causing the following error:

btproxy[20110]: < HCI Command: LE Terminate Broadcast Isochronous Group (0x08|0x006a) plen 2
        BIG Handle: 0x01
        Reason: Connection Terminated By Local Host (0x16)
> HCI Event: Command Status (0x0f) plen 4
      LE Terminate Broadcast Isochronous Group (0x08|0x006a) ncmd 1
        Status: Unknown Advertising Identifier (0x42)

Fixes: fa224d0c094a ("Bluetooth: ISO: Reassociate a socket with an active BIS")
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
net/bluetooth/hci_conn.c

index 111f0e37b672dcda024fca4dcdf12010118a85da..c5dedf39a1293f3cf20b1120e41318d9a701e322 100644 (file)
@@ -843,6 +843,13 @@ static void bis_cleanup(struct hci_conn *conn)
                if (bis)
                        return;
 
+               bis = hci_conn_hash_lookup_big_state(hdev,
+                                                    conn->iso_qos.bcast.big,
+                                                    BT_OPEN,
+                                                    HCI_ROLE_MASTER);
+               if (bis)
+                       return;
+
                hci_le_terminate_big(hdev, conn);
        } else {
                hci_le_big_terminate(hdev, conn->iso_qos.bcast.big,