{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-64206","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2026-07-19T15:36:31.769Z","datePublished":"2026-07-20T16:27:53.885Z","dateUpdated":"2026-08-17T04:51:53.043Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-17T04:51:53.043Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: L2CAP: cancel pending_rx_work before taking conn->lock\n\nl2cap_conn_del() takes conn->lock and then calls cancel_work_sync() for\npending_rx_work.  process_pending_rx() takes the same mutex, so teardown\ncan deadlock against the worker it is flushing.\n\nThis issue was found by our static analysis tool and then manually\nreviewed against the current tree.\n\nThe grounded PoC kept the l2cap_conn_ready() -> queue_work(...,\n&conn->pending_rx_work) submit path, the l2cap_conn_del() ->\ncancel_work_sync(&conn->pending_rx_work) teardown path, and the\nprocess_pending_rx() -> mutex_lock(&conn->lock) worker edge.  Lockdep\n\n  WARNING: possible circular locking dependency detected\n  process_pending_rx+0x21/0x2a [vuln_msv]\n  l2cap_conn_del.constprop.0+0x3f/0x4e [vuln_msv]\n  *** DEADLOCK ***\n\nCancel pending_rx_work before taking conn->lock, matching the existing\nlock-before-drain ordering used for the two delayed works in the same\nteardown path.  The pending_rx queue is still purged after the work has\nbeen cancelled and conn->lock has been acquired."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":8.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:A - A nearby Bluetooth peer can reach the flaw by establishing an ACL or LE link and supplying L2CAP traffic while forcing connection teardown.\nAC:L - The attacker controls connection establishment, queued traffic, and link termination, and can repeat attempts to win the workqueue race.\nPR:N - The vulnerable link-bring-up and teardown paths are reachable before Bluetooth pairing or authentication and require no attacker privileges.\nUI:N - No victim action is required once the Bluetooth interface is enabled and accepting connections.\nS:U - The vulnerable L2CAP code and the affected kernel resources belong to the same security authority.\nC:H - If the worker has started, work_pending() can be false and teardown can skip synchronization, free the l2cap_conn, and leave process_pending_rx() accessing reclaimed memory, creating an exploitable heap use-after-free.\nI:H - The resumed worker performs mutex and queue operations on the freed, potentially reallocated l2cap_conn, permitting heap corruption and potentially attacker-controlled writes or control-flow hijacking.\nA:H - The documented lock inversion can permanently deadlock connection teardown and the Bluetooth workqueue; the associated use-after-free can also crash or panic the kernel."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/bluetooth/l2cap_core.c"],"versions":[{"version":"7ab56c3a6eccb215034b0cb096e0313441cbf2a4","lessThan":"fc0c3b9cf27cfa2a06f66dae1d08c668fe0a2faa","status":"affected","versionType":"git"},{"version":"7ab56c3a6eccb215034b0cb096e0313441cbf2a4","lessThan":"9901f847a762a5d953871dd95767ce2aed3d684d","status":"affected","versionType":"git"},{"version":"7ab56c3a6eccb215034b0cb096e0313441cbf2a4","lessThan":"4a0bb0fd63fe2b0c62e1072cd1811d6f61e0081c","status":"affected","versionType":"git"},{"version":"7ab56c3a6eccb215034b0cb096e0313441cbf2a4","lessThan":"8daaf7f73fe998631a160d1a5a7e1b0b0480eef8","status":"affected","versionType":"git"},{"version":"7ab56c3a6eccb215034b0cb096e0313441cbf2a4","lessThan":"8de7b386ffad480ca59222b688c94a2da8f0d805","status":"affected","versionType":"git"},{"version":"7ab56c3a6eccb215034b0cb096e0313441cbf2a4","lessThan":"d5616beb3355b5fca2280d796c1cf7ada4ee6551","status":"affected","versionType":"git"},{"version":"7ab56c3a6eccb215034b0cb096e0313441cbf2a4","lessThan":"e96fbac8d3a73b0bc165383c092a30628561d320","status":"affected","versionType":"git"},{"version":"7ab56c3a6eccb215034b0cb096e0313441cbf2a4","lessThan":"2641a9e0a1dd4af2e21995470a21d55dd35e5203","status":"affected","versionType":"git"},{"version":"ee805f9499ebd0edf0877990968543c752043b59","status":"affected","versionType":"git"},{"version":"3.15.5","lessThan":"3.16","status":"affected","versionType":"semver"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/bluetooth/l2cap_core.c"],"versions":[{"version":"3.16","status":"affected"},{"version":"0","lessThan":"3.16","status":"unaffected","versionType":"semver"},{"version":"5.10.261","lessThanOrEqual":"5.10.*","status":"unaffected","versionType":"semver"},{"version":"5.15.212","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"6.1.178","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.145","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.12.97","lessThanOrEqual":"6.12.*","status":"unaffected","versionType":"semver"},{"version":"6.18.39","lessThanOrEqual":"6.18.*","status":"unaffected","versionType":"semver"},{"version":"7.1.4","lessThanOrEqual":"7.1.*","status":"unaffected","versionType":"semver"},{"version":"7.2","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.16","versionEndExcluding":"5.10.261"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.16","versionEndExcluding":"5.15.212"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.16","versionEndExcluding":"6.1.178"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.16","versionEndExcluding":"6.6.145"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.16","versionEndExcluding":"6.12.97"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.16","versionEndExcluding":"6.18.39"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.16","versionEndExcluding":"7.1.4"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.16","versionEndExcluding":"7.2"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.15.5"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/fc0c3b9cf27cfa2a06f66dae1d08c668fe0a2faa"},{"url":"https://git.kernel.org/stable/c/9901f847a762a5d953871dd95767ce2aed3d684d"},{"url":"https://git.kernel.org/stable/c/4a0bb0fd63fe2b0c62e1072cd1811d6f61e0081c"},{"url":"https://git.kernel.org/stable/c/8daaf7f73fe998631a160d1a5a7e1b0b0480eef8"},{"url":"https://git.kernel.org/stable/c/8de7b386ffad480ca59222b688c94a2da8f0d805"},{"url":"https://git.kernel.org/stable/c/d5616beb3355b5fca2280d796c1cf7ada4ee6551"},{"url":"https://git.kernel.org/stable/c/e96fbac8d3a73b0bc165383c092a30628561d320"},{"url":"https://git.kernel.org/stable/c/2641a9e0a1dd4af2e21995470a21d55dd35e5203"}],"title":"Bluetooth: L2CAP: cancel pending_rx_work before taking conn->lock","x_generator":{"engine":"bippy-1.2.0"}}}}