]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Bluetooth: Ignore too large handle values in BIG
authorEdward Adam Davis <eadavis@qq.com>
Mon, 17 Jun 2024 11:09:37 +0000 (19:09 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 11 Jul 2024 10:51:09 +0000 (12:51 +0200)
[ Upstream commit 015d79c96d62cd8a4a359fcf5be40d58088c936b ]

hci_le_big_sync_established_evt is necessary to filter out cases where the
handle value is belonging to ida id range, otherwise ida will be erroneously
released in hci_conn_cleanup.

Fixes: 181a42edddf5 ("Bluetooth: Make handle of hci_conn be unique")
Reported-by: syzbot+b2545b087a01a7319474@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=b2545b087a01a7319474
Signed-off-by: Edward Adam Davis <eadavis@qq.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/bluetooth/hci_event.c

index 0b3a76fcfedf5503d0c3e3233eeb9ec4eec8300f..eb59f418eb6dcf308500048d061f3f58e9578874 100644 (file)
@@ -6910,6 +6910,10 @@ static void hci_le_big_sync_established_evt(struct hci_dev *hdev, void *data,
 
                bis = hci_conn_hash_lookup_handle(hdev, handle);
                if (!bis) {
+                       if (handle > HCI_CONN_HANDLE_MAX) {
+                               bt_dev_dbg(hdev, "ignore too large handle %u", handle);
+                               continue;
+                       }
                        bis = hci_conn_add(hdev, ISO_LINK, BDADDR_ANY,
                                           HCI_ROLE_SLAVE, handle);
                        if (IS_ERR(bis))