CVE-2026-90091

Bluetooth: L2CAP: fix race l2cap_sock_cleanup_listen() vs. put_chan

HIGH
8
CVSS Score
Published: September 17, 2026 at 04:06 PM UTC
Updated: October 19, 2026 at 09:18 AM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
HIGH8
Exploit prediction
EPSS 0.4%

Description

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: L2CAP: fix race l2cap_sock_cleanup_listen() vs. put_chan For L2CAP sockets without owning sk->sk_socket, reading l2cap_pi(sk)->chan may race against concurrent l2cap_sock_kill() -> l2cap_sock_put_chan(). This excludes simultaneous proto_ops callbacks, but access in l2cap_sock_cleanup_listen() has unsafe lockless read. [Task 1] [Task 2 (hdev->workqueue)] l2cap_sock_release(parent) l2cap_disconn_cfm l2cap_sock_cleanup_listen l2cap_conn_del bt_accept_dequeue l2cap_chan_del lock_sock(sk) l2cap_sock_teardown_cb bt_accept_unlink bt_sk(sk)->parent = NULL release_sock(sk) ----------------> lock_sock(sk) parent = /* NULL */ lock_sock(sk) <--------------------- release_sock(sk) sock_set_flag(sk, SOCK_ZAPPED) l2cap_sock_close_cb l2cap_sock_kill(sk) l2cap_sock_put_chan chan = READ l2cap_pi(sk)->chan l2cap_pi(sk)->chan = NULL l2cap_chan_hold_unless_zero l2cap_put_chan(chan) kref_get_unless_zero(&chan->ref) Task 1 may observe NULL which causes null-ptr-deref. Fix the race by taking lock_sock() in l2cap_sock_kill() to synchronize with l2cap_sock_cleanup_listen(). hold_unless_zero() is not needed here, l2cap_pi(sk)->chan owns reference if it is non-NULL. Clarify code comments vs. locking.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

36da806f7fbaee56ad9e81859deec203f97287006.1.1786.12.976.18.406.6.1456fef032af0092ed5ccb767239a9ac1bc38c08a407.1.57.2733e76e74e406c1d1ddc7369420dd8a47f48bb8a84e718b6a814edc84159361f9f454a4e92ae91ae8c37e4338c801ebb8cee52436c01c41e009f6e87b39298044e5534612511a2ff5de03ba5f6e7a820
Vendor states this is fixed in 32a7bc6e93be36b37fe61f351d312d358195bd61 (fixed)
Vendor states this is fixed in 4f8c63fe0097c9f6ea34409f82f79b3894903d91 (fixed)
Vendor states this is fixed in 61d5ddbd524c715b224cbe7e9f01da4e05098b19 (fixed)
Vendor states this is fixed in 66d6ef18548ae6d7dd452b84115fc82c0a73a4ea (fixed)
Vendor states this is fixed in 7c7ac736b50fa259ed1bdddc18d79523f07c0442 (fixed)
Vendor states this is fixed in 827de6bd2865b22aaabd554540def3b8a33018ab (fixed)
Vendor states this is fixed in 6.1.188 (unaffected)
Vendor states this is fixed in 6.12.110 (unaffected)
Vendor states this is fixed in 6.18.52 (unaffected)
Vendor states this is fixed in 6.6.157 (unaffected)
Vendor states this is fixed in 7.2 (unaffected)
Vendor states this is fixed in 7.2.6 (unaffected)
Vendor states this is fixed in 7.3 (unaffected)
Vendor states this is fixed in 7.3-rc1 (unaffected)

Remediation

No guide yet

No remediation guidance has been written for this CVE yet, and no fixed version or vendor advisory is recorded against it.

CVSS

8HIGHLinux
Vector?

Quick Info

StatusRECEIVED

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card