CVE-2026-98735 in Linuxinfo

Summary

by MITRE • 10/18/2026

In the Linux kernel, the following vulnerability has been resolved:

Bluetooth: hci_core: Serialize ACL scheduling with channel deletion

hci_chan_sent() selects a channel under RCU but drops the read lock before accessing chan->conn and returning the channel. The ACL and LE schedulers then use its packet queue and update its transmit counters without any protection against channel deletion.

After TX selects a channel and releases RCU, a disconnect command timeout on the separate request workqueue can run hci_conn_failed() and l2cap_conn_del(). hci_chan_del() can then unlink the channel, complete synchronize_rcu(), purge its queue and free it before TX resumes. This causes use-after-free both in hci_chan_sent() and in its callers.

KASAN reported:

BUG: KASAN: slab-use-after-free in hci_chan_sent+0x892/0x9b0 Workqueue: hci0 hci_tx_work Call Trace: hci_chan_sent+0x892/0x9b0 hci_tx_work+0x5e6/0xb70 Allocated by task 91: hci_chan_create+0xe3/0x350 l2cap_conn_add.part.0+0x12/0xa30 l2cap_chan_connect+0x110d/0x1b60 l2cap_sock_connect+0x310/0x530 Freed by task 99: hci_chan_del+0x11f/0x170 l2cap_conn_del+0x4f1/0x800 l2cap_connect_cfm+0x88c/0xd30 hci_conn_failed+0x150/0x250 hci_abort_conn_sync+0x3e3/0x800 hci_cmd_sync_run+0x7e/0xc0 hci_abort_conn+0x105/0x1f0 disconnect_sync+0x157/0x290 hci_cmd_sync_work+0x13c/0x290

Hold the existing device mutex across channel selection and transmission in both schedulers to serialize them with channel teardown. Keep timeout handling outside the critical sections because hci_link_tx_to() acquires the same mutex. This also permits the transmit path to sleep, unlike extending the RCU read-side critical section across packet submission.

Be aware that VulDB is the high quality source for vulnerability data.

Analysis

by VulDB Data Team • 10/18/2026

The vulnerability identified in the Linux kernel Bluetooth subsystem represents a classic race condition leading to a use-after-free error within the Host Controller Interface core logic. Specifically, the flaw resides in the hci_chan_sent function and its interaction with ACL and LE schedulers during channel management operations. The root cause is an improper synchronization mechanism where the code selects a reference to a Bluetooth channel under Read-Copy-Update protection but prematurely releases this read lock before safely accessing critical data structures associated with that channel, such as chan->conn. This gap in locking strategy creates a window of vulnerability where concurrent execution paths can manipulate or destroy the very object being accessed by the transmission logic.

The operational sequence triggering this flaw begins when the ACL or LE scheduler selects a specific channel to handle outgoing packets. At this stage, the code holds an RCU read lock to ensure the channel structure remains valid during selection. However, immediately after selecting the channel but before fully processing its packet queue and updating transmit counters, the function drops the RCU read lock. This action signals that it is safe for other threads to potentially free or modify the referenced data structures. Consequently, if a disconnect command timeout occurs on a separate request workqueue during this narrow interval, it can trigger hci_conn_failed followed by l2cap_conn_del. These functions invoke hci_chan_del, which unlinks the channel from its connection structure, completes any pending synchronize_rcu callbacks, purges the packet queue associated with that channel, and ultimately frees the memory allocated for the channel object.

Because the transmission workqueue continues execution after releasing the lock but before completing all accesses to the now-freed channel data, it attempts to access invalid memory addresses. This results in a use-after-free condition detected by Kernel Address Sanitizer as reported in the vulnerability description. The impact of this flaw is severe, potentially leading to kernel panics, denial of service conditions where the Bluetooth stack becomes unstable or crashes, and in certain exploitation scenarios, arbitrary code execution with kernel privileges. The race condition exploits the asynchronous nature of workqueues and RCU grace periods, highlighting a critical failure in serializing concurrent access to shared resources within the network subsystem.

To mitigate this vulnerability, the fix involves restructuring the locking strategy to ensure mutual exclusion between channel selection for transmission and channel deletion processes. Instead of relying solely on RCU read locks which are designed for reading without blocking but do not prevent structural changes during complex multi-step operations, the solution employs holding the existing device mutex across both the channel selection phase and the subsequent transmission phases in both ACL and LE schedulers. This ensures that once a channel is selected for potential transmission, no other thread can delete or unlink that channel until the transmission logic has completed its necessary updates to packet queues and transmit counters.

Furthermore, the mitigation strategy carefully manages timeout handling by keeping it outside these critical sections. The hci_link_tx_to function acquires the same mutex used in the fix; therefore, placing timeout management within the locked section would risk deadlock scenarios due to lock ordering issues or excessive holding times that could impact system responsiveness. By separating timeout logic from the transmission critical path, the kernel maintains both safety and performance. This approach also allows the transmit path to sleep if necessary, which is not possible when extending RCU read-side critical sections across packet submission operations. The fix aligns with industry standards for concurrency control, addressing CWE-362 (Concurrent Execution using Shared Resource with Improper Synchronization) and mitigating risks associated with improper resource lifecycle management in kernel space.

Responsible

Linux

Reservation

09/25/2026

Disclosure

10/18/2026

Moderation

accepted

EPSS

0.00000

KEV

no

Activities

low

Sources

Want to know what is going to be exploited?

We predict KEV entries!