{"api_version":"1","generated_at":"2026-09-15T05:44:03+00:00","cve":"CVE-2026-89455","urls":{"html":"https://cve.report/CVE-2026-89455","api":"https://cve.report/api/cve/CVE-2026-89455.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-89455","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-89455"},"summary":{"title":"PCI: plda: Fix use-after-free of event IRQs during teardown","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nPCI: plda: Fix use-after-free of event IRQs during teardown\n\nplda_pcie_irq_domain_deinit() removes pcie->event_domain via\nirq_domain_remove(), but the per-event IRQs mapped from that domain\nare requested with devm_request_irq() in plda_init_interrupts(). The\nactual free_irq() for a devm-managed IRQ is deferred by devres until\nafter the calling probe()/remove() function returns.\n\nThis means irq_domain_remove() can free the domain's internal data\nbefore the deferred free_irq() for IRQs still mapped into it has run.\nWhen devres later processes that deferred cleanup, it can end up\ndereferencing the already-freed domain.\n\nFree each event IRQ explicitly with devm_free_irq() before removing\nthe domain. This triggers the free immediately and removes the IRQ\nfrom the devres tracking list, so devres will not attempt to free it\na second time later.\n\nAlso dispose of the event, INTx, and MSI IRQ mappings with\nirq_dispose_mapping() before their owning domains are removed.\n\nFinally, guard the calls to irq_set_chained_handler_and_data() for\npcie->irq, pcie->msi_irq, and pcie->intx_irq so they only run when\nthose fields hold a valid (>0) IRQ number.\n\nThis is a pre-existing issue, flagged by automated review during work\non an earlier, unrelated patch to this driver.\n\nBuild-tested and boot-tested on StarFive VisionFive v1.2A board","state":"PUBLISHED","assigner":"Linux","published_at":"2026-09-11 20:19:26","updated_at":"2026-09-11 20:19:26"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/26b73bae01d6eb81a4a38f36101812f20b2639de","name":"https://git.kernel.org/stable/c/26b73bae01d6eb81a4a38f36101812f20b2639de","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/1d0159e139261996a3ca21798d9114aab2124d3c","name":"https://git.kernel.org/stable/c/1d0159e139261996a3ca21798d9114aab2124d3c","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/01c2f0c66bd1f892db9c6e82976da6b463cc4427","name":"https://git.kernel.org/stable/c/01c2f0c66bd1f892db9c6e82976da6b463cc4427","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/e3589ca5f2e6477774753a2202c21509428d4701","name":"https://git.kernel.org/stable/c/e3589ca5f2e6477774753a2202c21509428d4701","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-89455","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-89455","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 76c9113968079140cb2f885631db422170f32105 1d0159e139261996a3ca21798d9114aab2124d3c git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 76c9113968079140cb2f885631db422170f32105 01c2f0c66bd1f892db9c6e82976da6b463cc4427 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 76c9113968079140cb2f885631db422170f32105 e3589ca5f2e6477774753a2202c21509428d4701 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 76c9113968079140cb2f885631db422170f32105 26b73bae01d6eb81a4a38f36101812f20b2639de git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6.11","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.11 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.109 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.50 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2.4 7.2.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.3-rc1 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"89455","cve":"CVE-2026-89455","epss":"0.002000000","percentile":"0.099460000","score_date":"2026-09-14","updated_at":"2026-09-15 00:00:43"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["drivers/pci/controller/plda/pcie-plda-host.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"1d0159e139261996a3ca21798d9114aab2124d3c","status":"affected","version":"76c9113968079140cb2f885631db422170f32105","versionType":"git"},{"lessThan":"01c2f0c66bd1f892db9c6e82976da6b463cc4427","status":"affected","version":"76c9113968079140cb2f885631db422170f32105","versionType":"git"},{"lessThan":"e3589ca5f2e6477774753a2202c21509428d4701","status":"affected","version":"76c9113968079140cb2f885631db422170f32105","versionType":"git"},{"lessThan":"26b73bae01d6eb81a4a38f36101812f20b2639de","status":"affected","version":"76c9113968079140cb2f885631db422170f32105","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["drivers/pci/controller/plda/pcie-plda-host.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"6.11"},{"lessThan":"6.11","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.109","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.50","versionType":"semver"},{"lessThanOrEqual":"7.2.*","status":"unaffected","version":"7.2.4","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.3-rc1","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.109","versionStartIncluding":"6.11","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.50","versionStartIncluding":"6.11","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2.4","versionStartIncluding":"6.11","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.3-rc1","versionStartIncluding":"6.11","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nPCI: plda: Fix use-after-free of event IRQs during teardown\n\nplda_pcie_irq_domain_deinit() removes pcie->event_domain via\nirq_domain_remove(), but the per-event IRQs mapped from that domain\nare requested with devm_request_irq() in plda_init_interrupts(). The\nactual free_irq() for a devm-managed IRQ is deferred by devres until\nafter the calling probe()/remove() function returns.\n\nThis means irq_domain_remove() can free the domain's internal data\nbefore the deferred free_irq() for IRQs still mapped into it has run.\nWhen devres later processes that deferred cleanup, it can end up\ndereferencing the already-freed domain.\n\nFree each event IRQ explicitly with devm_free_irq() before removing\nthe domain. This triggers the free immediately and removes the IRQ\nfrom the devres tracking list, so devres will not attempt to free it\na second time later.\n\nAlso dispose of the event, INTx, and MSI IRQ mappings with\nirq_dispose_mapping() before their owning domains are removed.\n\nFinally, guard the calls to irq_set_chained_handler_and_data() for\npcie->irq, pcie->msi_irq, and pcie->intx_irq so they only run when\nthose fields hold a valid (>0) IRQ number.\n\nThis is a pre-existing issue, flagged by automated review during work\non an earlier, unrelated patch to this driver.\n\nBuild-tested and boot-tested on StarFive VisionFive v1.2A board"}],"providerMetadata":{"dateUpdated":"2026-09-11T19:43:19.370Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/1d0159e139261996a3ca21798d9114aab2124d3c"},{"url":"https://git.kernel.org/stable/c/01c2f0c66bd1f892db9c6e82976da6b463cc4427"},{"url":"https://git.kernel.org/stable/c/e3589ca5f2e6477774753a2202c21509428d4701"},{"url":"https://git.kernel.org/stable/c/26b73bae01d6eb81a4a38f36101812f20b2639de"}],"title":"PCI: plda: Fix use-after-free of event IRQs during teardown","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-89455","datePublished":"2026-09-11T19:43:19.370Z","dateReserved":"2026-09-11T19:38:34.707Z","dateUpdated":"2026-09-11T19:43:19.370Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-09-11 20:19:26","lastModifiedDate":"2026-09-11 20:19:26","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"89455","Ordinal":"1","Title":"PCI: plda: Fix use-after-free of event IRQs during teardown","CVE":"CVE-2026-89455","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"89455","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nPCI: plda: Fix use-after-free of event IRQs during teardown\n\nplda_pcie_irq_domain_deinit() removes pcie->event_domain via\nirq_domain_remove(), but the per-event IRQs mapped from that domain\nare requested with devm_request_irq() in plda_init_interrupts(). The\nactual free_irq() for a devm-managed IRQ is deferred by devres until\nafter the calling probe()/remove() function returns.\n\nThis means irq_domain_remove() can free the domain's internal data\nbefore the deferred free_irq() for IRQs still mapped into it has run.\nWhen devres later processes that deferred cleanup, it can end up\ndereferencing the already-freed domain.\n\nFree each event IRQ explicitly with devm_free_irq() before removing\nthe domain. This triggers the free immediately and removes the IRQ\nfrom the devres tracking list, so devres will not attempt to free it\na second time later.\n\nAlso dispose of the event, INTx, and MSI IRQ mappings with\nirq_dispose_mapping() before their owning domains are removed.\n\nFinally, guard the calls to irq_set_chained_handler_and_data() for\npcie->irq, pcie->msi_irq, and pcie->intx_irq so they only run when\nthose fields hold a valid (>0) IRQ number.\n\nThis is a pre-existing issue, flagged by automated review during work\non an earlier, unrelated patch to this driver.\n\nBuild-tested and boot-tested on StarFive VisionFive v1.2A board","Type":"Description","Title":"PCI: plda: Fix use-after-free of event IRQs during teardown"}]}}}