{"api_version":"1","generated_at":"2026-10-20T10:33:14+00:00","cve":"CVE-2026-98691","urls":{"html":"https://cve.report/CVE-2026-98691","api":"https://cve.report/api/cve/CVE-2026-98691.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-98691","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-98691"},"summary":{"title":"thunderbolt: Tear down inactive DP tunnels when the domain is stopped","description":"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.","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/cbd2abb85ea32cafdcbaba218e13b18d8ed79bfa","name":"https://git.kernel.org/stable/c/cbd2abb85ea32cafdcbaba218e13b18d8ed79bfa","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/34a6e27c954e5bfc29fead17867c7155d54b6481","name":"https://git.kernel.org/stable/c/34a6e27c954e5bfc29fead17867c7155d54b6481","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/0b457c6733f73421a3fb03786f13d67c618b5119","name":"https://git.kernel.org/stable/c/0b457c6733f73421a3fb03786f13d67c618b5119","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-98691","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-98691","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected d6d458d42e1e1544a18f37f1d5c840e00d5261b9 34a6e27c954e5bfc29fead17867c7155d54b6481 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected d6d458d42e1e1544a18f37f1d5c840e00d5261b9 cbd2abb85ea32cafdcbaba218e13b18d8ed79bfa git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected d6d458d42e1e1544a18f37f1d5c840e00d5261b9 0b457c6733f73421a3fb03786f13d67c618b5119 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"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"34a6e27c954e5bfc29fead17867c7155d54b6481","status":"affected","version":"d6d458d42e1e1544a18f37f1d5c840e00d5261b9","versionType":"git"},{"lessThan":"cbd2abb85ea32cafdcbaba218e13b18d8ed79bfa","status":"affected","version":"d6d458d42e1e1544a18f37f1d5c840e00d5261b9","versionType":"git"},{"lessThan":"0b457c6733f73421a3fb03786f13d67c618b5119","status":"affected","version":"d6d458d42e1e1544a18f37f1d5c840e00d5261b9","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["drivers/thunderbolt/tb.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: 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."}],"providerMetadata":{"dateUpdated":"2026-10-19T09:24:01.186Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/34a6e27c954e5bfc29fead17867c7155d54b6481"},{"url":"https://git.kernel.org/stable/c/cbd2abb85ea32cafdcbaba218e13b18d8ed79bfa"},{"url":"https://git.kernel.org/stable/c/0b457c6733f73421a3fb03786f13d67c618b5119"}],"title":"thunderbolt: Tear down inactive DP tunnels when the domain is stopped","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-98691","datePublished":"2026-10-18T15:46:15.299Z","dateReserved":"2026-09-25T10:25:14.364Z","dateUpdated":"2026-10-19T09:24:01.186Z","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":"98691","Ordinal":"1","Title":"thunderbolt: Tear down inactive DP tunnels when the domain is st","CVE":"CVE-2026-98691","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"98691","Ordinal":"1","NoteData":"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.","Type":"Description","Title":"thunderbolt: Tear down inactive DP tunnels when the domain is st"}]}}}