CVE-2026-98693 (GCVE-0-2026-98693)
Vulnerability from cvelistv5
Published
2026-10-18 15:46
Modified
2026-10-19 09:24
Severity ?
Summary
In the Linux kernel, the following vulnerability has been resolved: thunderbolt: Hold a router reference for each allocated HopID tb_stop() drops the reference to all DP tunnels but does not deactivate them, thus nothing cancels a dprx_work still in flight (which holds its own tunnel reference) and the tunnel can outlive tb_switch_remove(). The HopID releases in tb_path_free() then operate on freed IDAs and trigger warnings like ida_free called for id=8 which is not allocated. This can be triggered by unbinding the driver while a DP tunnel is still waiting for the DPRX capabilities read to finish. On the Apple NHI unplugging the cable runs into just that reliably because the read can never finish right now and because the unplug powers down the entire USB4 complex and removes the NHI device. Take a router reference whenever an input or output HopID is allocated and drop it again after the HopID is released. This keeps the ports and their HopID IDAs alive for as long as they are used. The KUnit tests allocate routers without ever registering their devices so initialize the embedded struct device there as well and drop its initial reference when the test is finished.
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/switch.c",
            "drivers/thunderbolt/test.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "c444d2c17dc236680324fd989232199680a6c419",
              "status": "affected",
              "version": "d6d458d42e1e1544a18f37f1d5c840e00d5261b9",
              "versionType": "git"
            },
            {
              "lessThan": "2b5f976119d8f099a03cbf700df3d9c8690fe33d",
              "status": "affected",
              "version": "d6d458d42e1e1544a18f37f1d5c840e00d5261b9",
              "versionType": "git"
            },
            {
              "lessThan": "032c59c7681c661b63123231824170c025afb7e7",
              "status": "affected",
              "version": "d6d458d42e1e1544a18f37f1d5c840e00d5261b9",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/thunderbolt/switch.c",
            "drivers/thunderbolt/test.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: Hold a router reference for each allocated HopID\n\ntb_stop() drops the reference to all DP tunnels but does not deactivate\nthem, thus nothing cancels a dprx_work still in flight (which holds its\nown tunnel reference) and the tunnel can outlive tb_switch_remove(). The\nHopID releases in tb_path_free() then operate on freed IDAs and trigger\nwarnings like\n\n  ida_free called for id=8 which is not allocated.\n\nThis can be triggered by unbinding the driver while a DP tunnel is still\nwaiting for the DPRX capabilities read to finish. On the Apple NHI\nunplugging the cable runs into just that reliably because the read can\nnever finish right now and because the unplug powers down the entire\nUSB4 complex and removes the NHI device.\n\nTake a router reference whenever an input or output HopID is allocated\nand drop it again after the HopID is released. This keeps the ports and\ntheir HopID IDAs alive for as long as they are used.\n\nThe KUnit tests allocate routers without ever registering their devices\nso initialize the embedded struct device there as well and drop its\ninitial reference when the test is finished."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-10-19T09:24:03.100Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/c444d2c17dc236680324fd989232199680a6c419"
        },
        {
          "url": "https://git.kernel.org/stable/c/2b5f976119d8f099a03cbf700df3d9c8690fe33d"
        },
        {
          "url": "https://git.kernel.org/stable/c/032c59c7681c661b63123231824170c025afb7e7"
        }
      ],
      "title": "thunderbolt: Hold a router reference for each allocated HopID",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-98693",
    "datePublished": "2026-10-18T15:46:17.742Z",
    "dateReserved": "2026-09-25T10:25:14.364Z",
    "dateUpdated": "2026-10-19T09:24:03.100Z",
    "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…