CVE-2026-80620

Revert "PCI/MSI: Unmap MSI-X region on error"

N/A
Published: August 28, 2026 at 06:48 AM UTC
Updated: August 28, 2026 at 08:32 AM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
N/A
Exploit prediction
EPSS 0.2%

Description

In the Linux kernel, the following vulnerability has been resolved: Revert "PCI/MSI: Unmap MSI-X region on error" This reverts commit 1a8d4c6ecb4c81261bcdf13556abd4a958eca202. Commit 1a8d4c6ecb4c ("PCI/MSI: Unmap MSI-X region on error") added an iounmap(dev->msix_base) on the error path of msix_capability_init() to release the MSI-X region when msix_setup_interrupts() fails. When msix_setup_interrupts() fails, the call chain is: msix_setup_interrupts() -> __msix_setup_interrupts() struct pci_dev *dev __free(free_msi_irqs) = __dev; ... return ret; // __free cleanup fires on error The __free(free_msi_irqs) cleanup calls pci_free_msi_irqs(), which already handles the unmap: void pci_free_msi_irqs(struct pci_dev *dev) { pci_msi_teardown_msi_irqs(dev); if (dev->msix_base) { iounmap(dev->msix_base); // already unmapped here dev->msix_base = NULL; // and set to NULL } } So dev->msix_base is unmapped and set to NULL before msix_setup_interrupts() returns to msix_capability_init(). The "goto out_unmap" introduced by commit 1a8d4c6ecb4c ("PCI/MSI: Unmap MSI-X region on error") then calls iounmap() a second time on a NULL pointer. This was reproduced on Intel Emerald Rapids (192 CPUs) while running tools/testing/selftests/kexec/test_kexec_jump.sh: WARNING: CPU#44 at iounmap+0x2a/0xe0 RIP: 0010:iounmap+0x2a/0xe0 RDI: 0000000000000000 Call Trace: msix_capability_init+0x317/0x3f0 __pci_enable_msix_range+0x21d/0x2c0 pci_alloc_irq_vectors_affinity+0xa9/0x130 nvme_setup_io_queues+0x2a8/0x420 [nvme] nvme_reset_work+0x151/0x340 [nvme] ... RDI=0 confirms iounmap() is called with NULL. Restore the original "goto out_disable" and leave the unmap to the existing __free(free_msi_irqs) cleanup.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

v ≥ 6.19.66.1.165 ≤ v < 6.1.1786.12.75 ≤ v < 6.12.976.18.16 ≤ v < 6.18.406.19.6 ≤ v < 6.206.6.128 ≤ v < 6.6.1457.0 ≤ v < 7.1.57.0 ≤ v < 7.219bf27b450fcd5309bacd614b12bd7de1ac6535b1a8d4c6ecb4c81261bcdf13556abd4a958eca2024a7589b615a3db6792d36b874add86cd22188c955f007c6acaa7d9a543b492c1e48c48a0ea1d71476.1.1656.12.756.18.166.19.66.6.1287.076f7abd4ee0188f06465bdd3c053fdc5e8595152aee8db5f048616990dbdefcc25689ade0a2620ec
Vendor states this is fixed in 0a2aeb02894b839ecc3ece6dc7e5c3d6c3def16f (fixed)
Vendor states this is fixed in 3691a82be2095abaf3326a1cbf7b25858a1d959c (fixed)
Vendor states this is fixed in 6848ca381edff84f87dd1b6973848c271541e813 (fixed)
Vendor states this is fixed in 82e120a7dd566c476ba923d30e3fb78e8118a1dd (fixed)
Vendor states this is fixed in f64e03da0d83cb173743888bff4a7e61476a8fc2 (fixed)
Vendor states this is fixed in f79519f636059b007d6abc91652f36dea4f54a20 (fixed)
Vendor states this is fixed in 6.1.178 (unaffected)
Vendor states this is fixed in 6.12.97 (unaffected)
Vendor states this is fixed in 6.18.40 (unaffected)
Affected range stops below 6.20, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 6.6.145 (unaffected)
Vendor states this is fixed in 7.0 (unaffected)
Vendor states this is fixed in 7.1.5 (unaffected)
Vendor states this is fixed in 7.2 (unaffected)

Remediation

No guide yet

No remediation guidance has been written for this CVE yet, and no fixed version or vendor advisory is recorded against it.

Quick Info

StatusRECEIVED

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card