CVE Catalog

CVE-2026-97977

Unknown
Published: Translated: NVD NIST

Summary

In the Linux kernel, the Bluetooth btusb driver has a use-after-free (UAF) vulnerability related to the asynchronous rx_work. btusb_close() and btusb_flush() cancel rx_work asynchronously, so if btusb_rx_work() is already running on another CPU, it may continue after cancellation. After device disconnect, btusb_data is freed, and the running work may access freed memory. The fix uses cancel_delayed_work_sync() instead of asynchronous cancellation.

Risk Assessment

The vulnerability can lead to access of freed memory, potentially causing system crashes, malfunction of Bluetooth, or possibly allowing an attacker to execute code in kernel context.

Recommendation

It is recommended to update the Linux kernel to a version containing the fix that uses synchronous cancellation of rx_work to avoid the race.

Other vulnerabilities in Linux kernel

See all
Original NVD description (English source)

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: btusb: Fix UAF of btusb_data by rx_work btusb_close() and btusb_flush() cancel data->rx_work with the asynchronous cancel_delayed_work(), so if btusb_rx_work() is already running on another CPU it keeps running after the cancel returns. btusb_disconnect() calls hci_unregister_dev(), which invokes btusb_close(), and then frees the btusb_data. A still running btusb_rx_work() then dereferences the freed data: while ((skb = skb_dequeue(&data->acl_q))) data->recv_acl(data->hdev, skb); Use cancel_delayed_work_sync() instead. In btusb_close() the cancel also has to happen after btusb_stop_traffic(), otherwise an URB completion racing with the cancel can requeue the work right after it has been waited for.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS