CVE-2026-64206 (GCVE-0-2026-64206)
Vulnerability from cvelistv5
Published
2026-07-20 16:27
Modified
2026-08-17 04:51
Summary
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: L2CAP: cancel pending_rx_work before taking conn->lock l2cap_conn_del() takes conn->lock and then calls cancel_work_sync() for pending_rx_work. process_pending_rx() takes the same mutex, so teardown can deadlock against the worker it is flushing. This issue was found by our static analysis tool and then manually reviewed against the current tree. The grounded PoC kept the l2cap_conn_ready() -> queue_work(..., &conn->pending_rx_work) submit path, the l2cap_conn_del() -> cancel_work_sync(&conn->pending_rx_work) teardown path, and the process_pending_rx() -> mutex_lock(&conn->lock) worker edge. Lockdep WARNING: possible circular locking dependency detected process_pending_rx+0x21/0x2a [vuln_msv] l2cap_conn_del.constprop.0+0x3f/0x4e [vuln_msv] *** DEADLOCK *** Cancel pending_rx_work before taking conn->lock, matching the existing lock-before-drain ordering used for the two delayed works in the same teardown path. The pending_rx queue is still purged after the work has been cancelled and conn->lock has been acquired.
Impacted products
Vendor Product Version
Linux Linux Version: 7ab56c3a6eccb215034b0cb096e0313441cbf2a4
Version: 7ab56c3a6eccb215034b0cb096e0313441cbf2a4
Version: 7ab56c3a6eccb215034b0cb096e0313441cbf2a4
Version: 7ab56c3a6eccb215034b0cb096e0313441cbf2a4
Version: 7ab56c3a6eccb215034b0cb096e0313441cbf2a4
Version: 7ab56c3a6eccb215034b0cb096e0313441cbf2a4
Version: 7ab56c3a6eccb215034b0cb096e0313441cbf2a4
Version: 7ab56c3a6eccb215034b0cb096e0313441cbf2a4
Version: ee805f9499ebd0edf0877990968543c752043b59
Version: 3.15.5   
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "net/bluetooth/l2cap_core.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "fc0c3b9cf27cfa2a06f66dae1d08c668fe0a2faa",
              "status": "affected",
              "version": "7ab56c3a6eccb215034b0cb096e0313441cbf2a4",
              "versionType": "git"
            },
            {
              "lessThan": "9901f847a762a5d953871dd95767ce2aed3d684d",
              "status": "affected",
              "version": "7ab56c3a6eccb215034b0cb096e0313441cbf2a4",
              "versionType": "git"
            },
            {
              "lessThan": "4a0bb0fd63fe2b0c62e1072cd1811d6f61e0081c",
              "status": "affected",
              "version": "7ab56c3a6eccb215034b0cb096e0313441cbf2a4",
              "versionType": "git"
            },
            {
              "lessThan": "8daaf7f73fe998631a160d1a5a7e1b0b0480eef8",
              "status": "affected",
              "version": "7ab56c3a6eccb215034b0cb096e0313441cbf2a4",
              "versionType": "git"
            },
            {
              "lessThan": "8de7b386ffad480ca59222b688c94a2da8f0d805",
              "status": "affected",
              "version": "7ab56c3a6eccb215034b0cb096e0313441cbf2a4",
              "versionType": "git"
            },
            {
              "lessThan": "d5616beb3355b5fca2280d796c1cf7ada4ee6551",
              "status": "affected",
              "version": "7ab56c3a6eccb215034b0cb096e0313441cbf2a4",
              "versionType": "git"
            },
            {
              "lessThan": "e96fbac8d3a73b0bc165383c092a30628561d320",
              "status": "affected",
              "version": "7ab56c3a6eccb215034b0cb096e0313441cbf2a4",
              "versionType": "git"
            },
            {
              "lessThan": "2641a9e0a1dd4af2e21995470a21d55dd35e5203",
              "status": "affected",
              "version": "7ab56c3a6eccb215034b0cb096e0313441cbf2a4",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "ee805f9499ebd0edf0877990968543c752043b59",
              "versionType": "git"
            },
            {
              "lessThan": "3.16",
              "status": "affected",
              "version": "3.15.5",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/bluetooth/l2cap_core.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "3.16"
            },
            {
              "lessThan": "3.16",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.261",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.212",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.178",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.145",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.97",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.39",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.261",
                  "versionStartIncluding": "3.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.212",
                  "versionStartIncluding": "3.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.178",
                  "versionStartIncluding": "3.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.145",
                  "versionStartIncluding": "3.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.97",
                  "versionStartIncluding": "3.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.39",
                  "versionStartIncluding": "3.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.4",
                  "versionStartIncluding": "3.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "3.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "3.15.5",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: L2CAP: cancel pending_rx_work before taking conn-\u003elock\n\nl2cap_conn_del() takes conn-\u003elock 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() -\u003e queue_work(...,\n\u0026conn-\u003epending_rx_work) submit path, the l2cap_conn_del() -\u003e\ncancel_work_sync(\u0026conn-\u003epending_rx_work) teardown path, and the\nprocess_pending_rx() -\u003e mutex_lock(\u0026conn-\u003elock) 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-\u003elock, 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-\u003elock has been acquired."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 8.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "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."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-17T04:51:53.043Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "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-\u003elock",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-64206",
    "datePublished": "2026-07-20T16:27:53.885Z",
    "dateReserved": "2026-07-19T15:36:31.769Z",
    "dateUpdated": "2026-08-17T04:51:53.043Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…