CVE-2026-89454: PCI: plda: Fix IRQ domain leaks in the error paths of plda_init_interrupts()
In the Linux kernel, the following vulnerability has been resolved:
PCI: plda: Fix IRQ domain leaks in the error paths of pldainitinterrupts()
pldainitinterrupts() initializes IRQ domains and creates IRQ mapping but does not unwind them when later step fails.
If platformgetirq() or either irqcreatemapping() fails in pldainitinterrupts(), the domains are never deinitialized. If irqcreatemapping() fails, port->intxirq stays initialized.
Hence, remove the IRQ domains in the error path by calling pldapcieirqdomaindeinit().
Since pldapcieirqdomaindeinit() now disposes of the intxirq and msiirq mappings itself before removing their domains, the msiirq mapping failure path can go directly to errirqdomaindeinit instead of disposing of port->intxirq separately first.
This issue was found by automated review of sashiko-bot
[mani: commit log]
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
debian/linuxto a version that resolves this vulnerability.Fixed in 6.1.176-1Fixed in 6.1.190-1Fixed in 6.12.115-2Fixed in 7.2.12-1Fixed in 7.2.15-1 - Upgrade
Upgrade
debian/linux-6.12to a version that resolves this vulnerability.Fixed in 6.12.113-1~deb12u1 - Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-42.42 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1016.17 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1016.18 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1015.16 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1 - Compensating control
In plda_init_interrupts(), unwind IRQ-domain resources on failure: route platform_get_irq() and either irq_create_mapping() failure to plda_pcie_irq_domain_deinit(), which disposes of the intx_irq and msi_irq mappings before removing their domains.
Event History
Frequently Asked Questions
What conditions trigger the resource leak?
The leak occurs only when plda_init_interrupts() encounters a later initialization failure after IRQ domains have been created. The described failure points are platform_get_irq() and either irq_create_mapping() call.
What resources can remain allocated after a failure?
IRQ domains are not deinitialized on the affected error paths. If irq_create_mapping() fails, the INTx IRQ mapping can also remain initialized.
How is the issue addressed?
The corrected error handling calls plda_pcie_irq_domain_deinit() to remove IRQ domains. That cleanup routine also disposes of the INTx and MSI IRQ mappings before removing their domains.