{"api_version":"1","generated_at":"2026-10-24T06:42:12+00:00","cve":"CVE-2026-98690","urls":{"html":"https://cve.report/CVE-2026-98690","api":"https://cve.report/api/cve/CVE-2026-98690.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-98690","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-98690"},"summary":{"title":"thunderbolt: Fix domain reference leak when DPRX read is canceled","description":"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.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-10-18 16:17:22","updated_at":"2026-10-19 10:19:33"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/2f5893172fc6153f5f1ef34014ddbfcbf1f47f29","name":"https://git.kernel.org/stable/c/2f5893172fc6153f5f1ef34014ddbfcbf1f47f29","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/1fd1f67c94d30889377bba774f032ec15e8b9299","name":"https://git.kernel.org/stable/c/1fd1f67c94d30889377bba774f032ec15e8b9299","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/7739b02129b2248f9a8054cfda924fa253f66a88","name":"https://git.kernel.org/stable/c/7739b02129b2248f9a8054cfda924fa253f66a88","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-98690","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-98690","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected d6d458d42e1e1544a18f37f1d5c840e00d5261b9 2f5893172fc6153f5f1ef34014ddbfcbf1f47f29 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected d6d458d42e1e1544a18f37f1d5c840e00d5261b9 7739b02129b2248f9a8054cfda924fa253f66a88 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected d6d458d42e1e1544a18f37f1d5c840e00d5261b9 1fd1f67c94d30889377bba774f032ec15e8b9299 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6.14","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.14 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.56 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2.10 7.2.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.3 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"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":"2f5893172fc6153f5f1ef34014ddbfcbf1f47f29","status":"affected","version":"d6d458d42e1e1544a18f37f1d5c840e00d5261b9","versionType":"git"},{"lessThan":"7739b02129b2248f9a8054cfda924fa253f66a88","status":"affected","version":"d6d458d42e1e1544a18f37f1d5c840e00d5261b9","versionType":"git"},{"lessThan":"1fd1f67c94d30889377bba774f032ec15e8b9299","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: 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."}],"providerMetadata":{"dateUpdated":"2026-10-19T09:24:00.240Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/2f5893172fc6153f5f1ef34014ddbfcbf1f47f29"},{"url":"https://git.kernel.org/stable/c/7739b02129b2248f9a8054cfda924fa253f66a88"},{"url":"https://git.kernel.org/stable/c/1fd1f67c94d30889377bba774f032ec15e8b9299"}],"title":"thunderbolt: Fix domain reference leak when DPRX read is canceled","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-98690","datePublished":"2026-10-18T15:46:13.825Z","dateReserved":"2026-09-25T10:25:14.364Z","dateUpdated":"2026-10-19T09:24:00.240Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-10-18 16:17:22","lastModifiedDate":"2026-10-19 10:19:33","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"98690","Ordinal":"1","Title":"thunderbolt: Fix domain reference leak when DPRX read is cancele","CVE":"CVE-2026-98690","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"98690","Ordinal":"1","NoteData":"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.","Type":"Description","Title":"thunderbolt: Fix domain reference leak when DPRX read is cancele"}]}}}