← Back to CVE Explorer

CVE-2026-98691

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: thunderbolt: Tear down inactive DP tunnels when the domain is stopped tb_stop() only tears down DMA tunnels so a DP tunnel that is still waiting for dprx_work to complete keeps that work queued while the routers are removed and the control channel is stopped. The work only stops once the DPRX timeout has passed and because it requeues itself until then the flush_workqueue() in tb_domain_remove() won't wait for its final run. The callback then runs against a domain that is already torn down. A reference to that domain is kept so the completion waiting for that domain to disappear in unbind will block until the timeout is eventually reached. Tear down DP tunnels that are not active yet as well which also cancels that work. Tunnels for displays that are already alive are untouched and keep working.

Severity
Not scored
CVSS score
Not available
Vulnerability status
Received
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2026-10-18 16:17:22.523000
Last modified
2026-10-19 10:19:33.460000
View original CVE JSON
{
  "id": "CVE-2026-98691",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2026-10-18T16:17:22.523",
  "lastModified": "2026-10-19T10:19:33.460",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nthunderbolt: Tear down inactive DP tunnels when the domain is stopped\n\ntb_stop() only tears down DMA tunnels so a DP tunnel that is still\nwaiting for dprx_work to complete keeps that work queued while the\nrouters are removed and the control channel is stopped. The work only\nstops once the DPRX timeout has passed and because it requeues itself\nuntil then the flush_workqueue() in tb_domain_remove() won't wait for its\nfinal run. The callback then runs against a domain that is already torn\ndown. A reference to that domain is kept so the completion waiting for\nthat domain to disappear in unbind will block until the timeout is\neventually reached.\n\nTear down DP tunnels that are not active yet as well which also cancels\nthat work. Tunnels for displays that are already alive are untouched and\nkeep working."
    }
  ],
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "programFiles": [
            "drivers/thunderbolt/tb.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "d6d458d42e1e1544a18f37f1d5c840e00d5261b9",
              "lessThan": "34a6e27c954e5bfc29fead17867c7155d54b6481",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "d6d458d42e1e1544a18f37f1d5c840e00d5261b9",
              "lessThan": "cbd2abb85ea32cafdcbaba218e13b18d8ed79bfa",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "d6d458d42e1e1544a18f37f1d5c840e00d5261b9",
              "lessThan": "0b457c6733f73421a3fb03786f13d67c618b5119",
              "versionType": "git",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "programFiles": [
            "drivers/thunderbolt/tb.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "6.14",
              "status": "affected"
            },
            {
              "version": "0",
              "lessThan": "6.14",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.18.56",
              "lessThanOrEqual": "6.18.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.2.10",
              "lessThanOrEqual": "7.2.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.3",
              "lessThanOrEqual": "*",
              "versionType": "original_commit_for_fix",
              "status": "unaffected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {},
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/0b457c6733f73421a3fb03786f13d67c618b5119",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/34a6e27c954e5bfc29fead17867c7155d54b6481",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/cbd2abb85ea32cafdcbaba218e13b18d8ed79bfa",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ]
}