Description
In the Linux kernel, the following vulnerability has been resolved:

PCI: plda: Fix use-after-free of event IRQs during teardown

plda_pcie_irq_domain_deinit() removes pcie->event_domain via
irq_domain_remove(), but the per-event IRQs mapped from that domain
are requested with devm_request_irq() in plda_init_interrupts(). The
actual free_irq() for a devm-managed IRQ is deferred by devres until
after the calling probe()/remove() function returns.

This means irq_domain_remove() can free the domain's internal data
before the deferred free_irq() for IRQs still mapped into it has run.
When devres later processes that deferred cleanup, it can end up
dereferencing the already-freed domain.

Free each event IRQ explicitly with devm_free_irq() before removing
the domain. This triggers the free immediately and removes the IRQ
from the devres tracking list, so devres will not attempt to free it
a second time later.

Also dispose of the event, INTx, and MSI IRQ mappings with
irq_dispose_mapping() before their owning domains are removed.

Finally, guard the calls to irq_set_chained_handler_and_data() for
pcie->irq, pcie->msi_irq, and pcie->intx_irq so they only run when
those fields hold a valid (>0) IRQ number.

This is a pre-existing issue, flagged by automated review during work
on an earlier, unrelated patch to this driver.

Build-tested and boot-tested on StarFive VisionFive v1.2A board
Published: 2026-09-11
Score: 4.1 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Local denial of service via use-after-free
Action: Apply patch
AI Analysis

Impact

A use-after-free is present in the PCI plda driver when a device is torn down. The driver removes an IRQ domain while IRQs that were requested with devm_request_irq() are still scheduled for deferred cleanup. When the deferred free_irq() runs, it dereferences data that has already been freed, potentially causing a crash of the kernel or an arbitrary pointer dereference. No evidence in the description indicates remote exploitation or code execution; the impact is limited to a system crash if the software performs the problematic teardown path.

Affected Systems

The vulnerability exists in the Linux kernel PCI plda driver. All kernel releases that include the unpatched plda driver are affected. The patch was verified on a StarFive VisionFive v1.2A board. No specific version range is listed, so any kernel containing the pre-patch code is vulnerable until the countermeasure is applied.

Risk and Exploitability

The CVSS score of 4.1 indicates a medium-severity flaw primarily affecting availability. The EPSS score is 0.002, indicating a very low exploitation probability, and the flaw is not listed in the CISA KEV catalog. The likely attack vector is local, as the flaw requires the, which an attacker can trigger by manipulating PCI devices or by provoking driver unload/reload events. The exploitability condition is that the device must be removed after driver initialization, a path that typically requires local access or privilege escalation.

Generated by OpenCVE AI on September 13, 2026 at 07:22 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade to a patched Linux kernel that includes the resolved plda driver flaw
  • Reboot the system after the kernel update to ensure the new driver is in use and check driver health
  • As an interim measure, avoid hot-plugging or removal of PCI devices managed by the plda driver until a patch is applied

Generated by OpenCVE AI on September 13, 2026 at 07:22 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 12 Sep 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-825
References
Metrics threat_severity

None

cvssV3_1

{'score': 4.1, 'vector': 'CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Moderate


Fri, 11 Sep 2026 23:45:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: PCI: plda: Fix use-after-free of event IRQs during teardown plda_pcie_irq_domain_deinit() removes pcie->event_domain via irq_domain_remove(), but the per-event IRQs mapped from that domain are requested with devm_request_irq() in plda_init_interrupts(). The actual free_irq() for a devm-managed IRQ is deferred by devres until after the calling probe()/remove() function returns. This means irq_domain_remove() can free the domain's internal data before the deferred free_irq() for IRQs still mapped into it has run. When devres later processes that deferred cleanup, it can end up dereferencing the already-freed domain. Free each event IRQ explicitly with devm_free_irq() before removing the domain. This triggers the free immediately and removes the IRQ from the devres tracking list, so devres will not attempt to free it a second time later. Also dispose of the event, INTx, and MSI IRQ mappings with irq_dispose_mapping() before their owning domains are removed. Finally, guard the calls to irq_set_chained_handler_and_data() for pcie->irq, pcie->msi_irq, and pcie->intx_irq so they only run when those fields hold a valid (>0) IRQ number. This is a pre-existing issue, flagged by automated review during work on an earlier, unrelated patch to this driver. Build-tested and boot-tested on StarFive VisionFive v1.2A board
Title PCI: plda: Fix use-after-free of event IRQs during teardown
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-09-11T19:43:19.370Z

Reserved: 2026-09-11T19:38:34.707Z

Link: CVE-2026-89455

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-11T20:19:26.220

Modified: 2026-09-11T20:19:26.220

Link: CVE-2026-89455

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-09-11T19:43:19Z

Links: CVE-2026-89455 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-13T16:30:13Z

Weaknesses
  • CWE-825

    Expired Pointer Dereference