CVE-2026-98690

Status: ReceivedUnscored—
Severity—Unscored
Exploitation probability0.17 %higher than 5% of CVEs
Active exploitationNonot in the CISA catalog
Public exploitNot knownno public code found

In the Linux kernel, the following vulnerability has been resolved:

thunderbolt: Fix domain reference leak when DPRX read is canceled

tb_tunnel_one_dp() takes a domain reference which is only dropped once tb_dp_tunnel_active() has run on the work queue. If that work is cancelled that reference is leaked. Since commit f5cc545f5969 ("thunderbolt: Wait for tb_domain_release() to complete when driver is removed") instead of just leaking memory this now also blocks in the completion wait forever when unbinding the driver.

This can be triggered whenever a DP tunnel is torn down before the DPRX read has completed, e.g. by unplugging within the timeout, and then unbinding the driver.

Read full descriptionShow less

That reference only exists to keep the domain around while the DPRX work is scheduled so let the work itself own it: take it in tb_dp_dprx_start() and drop it in both places that end the work. Get/put are then paired inside the same file and it doesn't matter anymore if the callback ever runs.

CVSS

NVD hasn't assigned a CVSS score to this CVE (common since the April 2026 policy change).

Exploitation probability (EPSS)

Probability of exploitation in the next 30 days
0.17 %
Percentile among all scored CVEs
5
Score date
10/20/2026

EPSS (Exploit Prediction Scoring System, FIRST) estimates how likely a vulnerability is to be exploited in the wild within 30 days. It complements CVSS (impact) and CISA KEV (confirmed exploitation).

Affected technologies (1)

⚠ AI-inferred from the description — NVD hasn't analyzed this CVE yet, these aren't verified CPEs.

References

Show 3 references

Raw JSON (NVD)

Show
{
  "id": "CVE-2026-98690",
  "cveTags": [],
  "metrics": {},
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "d6d458d42e1e1544a18f37f1d5c840e00d5261b9",
              "lessThan": "2f5893172fc6153f5f1ef34014ddbfcbf1f47f29",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "d6d458d42e1e1544a18f37f1d5c840e00d5261b9",
              "lessThan": "7739b02129b2248f9a8054cfda924fa253f66a88",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "d6d458d42e1e1544a18f37f1d5c840e00d5261b9",
              "lessThan": "1fd1f67c94d30889377bba774f032ec15e8b9299",
              "versionType": "git"
            }
          ],
          "programFiles": [
            "drivers/thunderbolt/tb.c",
            "drivers/thunderbolt/tunnel.c"
          ],
          "defaultStatus": "unaffected"
        },
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.14"
            },
            {
              "status": "unaffected",
              "version": "0",
              "lessThan": "6.14",
              "versionType": "semver"
            },
            {
              "status": "unaffected",
              "version": "6.18.56",
              "versionType": "semver",
              "lessThanOrEqual": "6.18.*"
            },
            {
              "status": "unaffected",
              "version": "7.2.10",
              "versionType": "semver",
              "lessThanOrEqual": "7.2.*"
            },
            {
              "status": "unaffected",
              "version": "7.3",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ],
          "programFiles": [
            "drivers/thunderbolt/tb.c",
            "drivers/thunderbolt/tunnel.c"
          ],
          "defaultStatus": "affected"
        }
      ]
    }
  ],
  "published": "2026-10-18T16:17:22.423",
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/1fd1f67c94d30889377bba774f032ec15e8b9299",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/2f5893172fc6153f5f1ef34014ddbfcbf1f47f29",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/7739b02129b2248f9a8054cfda924fa253f66a88",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ],
  "vulnStatus": "Received",
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nthunderbolt: Fix domain reference leak when DPRX read is canceled\n\ntb_tunnel_one_dp() takes a domain reference which is only dropped once\ntb_dp_tunnel_active() has run on the work queue. If that work is\ncancelled that reference is leaked. Since\ncommit f5cc545f5969 (\"thunderbolt: Wait for tb_domain_release() to\ncomplete when driver is removed\") instead of just leaking memory this\nnow also blocks in the completion wait forever when unbinding the\ndriver.\n\nThis can be triggered whenever a DP tunnel is torn down before the DPRX\nread has completed, e.g. by unplugging within the timeout, and then\nunbinding the driver.\n\nThat reference only exists to keep the domain around while the DPRX work\nis scheduled so let the work itself own it: take it in tb_dp_dprx_start()\nand drop it in both places that end the work. Get/put are then paired\ninside the same file and it doesn't matter anymore if the callback ever\nruns."
    }
  ],
  "lastModified": "2026-10-19T10:19:33.377",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}