CVE-2026-98689 (GCVE-0-2026-98689)
Vulnerability from cvelistv5
Published
2026-10-18 15:46
Modified
2026-10-19 09:23
Severity ?
Summary
In the Linux kernel, the following vulnerability has been resolved: thunderbolt: Don't access a DP tunnel after its DPRX read was canceled tb_dp_dprx_work() checks ->dprx_canceled before it takes tb->lock so it misses a tb_dp_dprx_stop() that could not cancel the already running work. It then polls the DPRX capabilities and runs the callback for a tunnel that has already been torn down while the domain is suspending or going away. This can be hit by cancelling the DPRX read from outside the ordered tb->wq: During suspend tb_disconnect_and_release_dp() does just this and with a later patch tb_stop() will do it as well. The latter in combination with the Apple NHI where the DPRX read never completed is how I hit this. Check the flag with tb->lock held instead and check it again in tb_dp_tunnel_active() because the callback runs after the lock has been dropped again. Also clear the flag in tb_dp_dprx_start() so that it only ever describes the work that is currently in flight.
Impacted products
Vendor Product Version
Linux Linux Version: d6d458d42e1e1544a18f37f1d5c840e00d5261b9
Version: d6d458d42e1e1544a18f37f1d5c840e00d5261b9
Version: d6d458d42e1e1544a18f37f1d5c840e00d5261b9
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/thunderbolt/tb.c",
            "drivers/thunderbolt/tunnel.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "405a969c0b3356639116db89ab367be1d64b77c0",
              "status": "affected",
              "version": "d6d458d42e1e1544a18f37f1d5c840e00d5261b9",
              "versionType": "git"
            },
            {
              "lessThan": "2c2fd6a7fd5e1218db7e17336fc1a0393b6949e6",
              "status": "affected",
              "version": "d6d458d42e1e1544a18f37f1d5c840e00d5261b9",
              "versionType": "git"
            },
            {
              "lessThan": "419fa32fa5bc2d7fb9d0d15d5630b1c1090808b3",
              "status": "affected",
              "version": "d6d458d42e1e1544a18f37f1d5c840e00d5261b9",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/thunderbolt/tb.c",
            "drivers/thunderbolt/tunnel.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.14"
            },
            {
              "lessThan": "6.14",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.56",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.10",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.56",
                  "versionStartIncluding": "6.14",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.10",
                  "versionStartIncluding": "6.14",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3",
                  "versionStartIncluding": "6.14",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nthunderbolt: Don\u0027t access a DP tunnel after its DPRX read was canceled\n\ntb_dp_dprx_work() checks -\u003edprx_canceled before it takes tb-\u003elock so it\nmisses a tb_dp_dprx_stop() that could not cancel the already running\nwork. It then polls the DPRX capabilities and runs the callback for a\ntunnel that has already been torn down while the domain is suspending or\ngoing away.\n\nThis can be hit by cancelling the DPRX read from outside the ordered\ntb-\u003ewq: During suspend tb_disconnect_and_release_dp() does just this and\nwith a later patch tb_stop() will do it as well. The latter in combination\nwith the Apple NHI where the DPRX read never completed is how I hit\nthis.\n\nCheck the flag with tb-\u003elock held instead and check it again in\ntb_dp_tunnel_active() because the callback runs after the lock has been\ndropped again.\n\nAlso clear the flag in tb_dp_dprx_start() so that it only ever describes\nthe work that is currently in flight."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-10-19T09:23:59.268Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/405a969c0b3356639116db89ab367be1d64b77c0"
        },
        {
          "url": "https://git.kernel.org/stable/c/2c2fd6a7fd5e1218db7e17336fc1a0393b6949e6"
        },
        {
          "url": "https://git.kernel.org/stable/c/419fa32fa5bc2d7fb9d0d15d5630b1c1090808b3"
        }
      ],
      "title": "thunderbolt: Don\u0027t access a DP tunnel after its DPRX read was canceled",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-98689",
    "datePublished": "2026-10-18T15:46:04.217Z",
    "dateReserved": "2026-09-25T10:25:14.364Z",
    "dateUpdated": "2026-10-19T09:23:59.268Z",
    "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…