CVE-2026-80762: Bluetooth: hci_sync: Fix accept list UAF during suspend
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: hcisync: Fix accept list UAF during suspend
hciupdateeventfiltersync() walks hdev->acceptlist while sending a synchronous HCI command for each remote-wakeup device. The suspend path holds hdev->reqlock, but accept-list updates are serialized by hdev->lock. Consequently, removedevice() can free the current list entry during the controller wait.
The following interleaving causes the use-after-free:
hciupdateeventfiltersync() removedevice() fetch accept-list entry hciseteventfiltersync() wait for controller response hcidevlock() listdel() kfree() hcidevunlock() read the freed list.next
KASAN reported:
BUG: KASAN: slab-use-after-free in hcisuspendsync+0x835/0x910 Read of size 8 at addr ffff88810bec8440 by task kworker/0:1/10 Workqueue: events vhcisuspendwork Call Trace: hcisuspendsync+0x835/0x910 hcisuspenddev+0x182/0x450 processonework+0x661/0x1090 workerthread+0x45b/0xd10
Allocated by task 86: hcibdaddrlistaddwithflags+0x1a8/0x400 adddevice+0x381/0x820 hcisocksendmsg+0x1033/0x1ea0
Freed by task 91: kfree+0x131/0x3c0 removedevice+0x429/0xb70 hcisocksendmsg+0x1033/0x1ea0
Snapshot the remote-wakeup addresses under hdev->lock. Release the lock before sending HCI commands. Clear the controller event filter before building the snapshot, and skip allocation and the second list traversal when there are no matching entries. This preserves the original filter and scan-state updates without retaining an accept-list node across a controller wait.
Affected Software
Event History
Frequently Asked Questions
When can this race occur?
It requires a Bluetooth controller suspend operation that updates the event filter for remote-wakeup devices while another operation removes an entry from the controller's accept list. The removal can free the entry while the suspend path is waiting for a synchronous HCI command to complete.
What symptoms can indicate that this issue has been triggered?
KASAN may report a slab use-after-free read in hci_suspend_sync. The reported execution context is a kernel worker handling vhci_suspend_work, with the freed object originating from remove_device().
Is a fix identified for this issue?
Yes. The vulnerability is described as resolved, and the record provides three stable-kernel commit references containing the fix. No affected or fixed kernel version numbers are provided.