KernelScan.io

HIGH Introduced in 4.11

pm8001 MsixRollback Leak

CVE-2026-90007

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI2.3LOW

01

In the Linux kernel, the following vulnerability has been resolved: scsi: pm8001: Use rollback index when freeing MSI-X vectors pm8001_request_msix() unwinds previously registered handlers with free_irq() when request_irq() fails. The rollback loop uses the failing index i for every iteration instead of the already registered vector index j. That passes the wrong IRQ/dev_id pair to free_irq() and leaves the earlier handlers installed. Use j for both pci_irq_vector() and the matching irq_vector entry in the rollback loop.

02

Engine v0.6.0

Risk summary

A bug in the pm8001 SAS/SATA HBA driver's error cleanup path leaks installed interrupt handlers when MSI-X vector registration fails partway through. The rollback loop uses the wrong index, leaving previously registered handlers installed and passing incorrect arguments to the cleanup function. This affects only systems with the specific pm8001 PCIe controller hardware and only manifests under interrupt allocation failure during driver initialization.

Affecteddrivers/scsi/pm8001/pm8001_init.c (pm8001 SCSI HBA driver)

Vulnerability analysis

When the pm8001 SAS/SATA HBA driver registers MSI-X interrupt vectors and one registration fails, the error-handling rollback loop should free all previously installed handlers. Instead, it uses the index of the failed vector for every iteration, so it repeatedly attempts to free the never-registered vector while leaving all successfully registered handlers installed and leaked. The fix corrects the loop to use the proper iteration index for both the IRQ number and the handler data, ensuring each registered handler is properly released. This bug is only reachable on systems with the specific pm8001 PCIe SAS controller hardware present, and only triggers when interrupt registration encounters a failure during driver initialization — not through any user-initiated syscall or network input.

03

BranchIntroducedFixed inPatch commit
5.104.115.10.270f39e3ca1f688
5.154.115.15.221a980dec7c699
6.14.116.1.1880205db768570
6.124.116.12.110fb22a8d2f3ac
6.184.116.18.51dd817463c9b4
6.64.116.6.1572853ce9c88e0
7.24.117.2.5e20b16aa3b49
mainline4.117.33f92a6454516
cip/5.104.115.10.271-cip78f39e3ca1f688
cip/6.14.116.1.189-cip610205db768570
cip/6.1-rt4.116.1.189-cip61-rt320205db768570
cip/6.124.116.12.111-cip32fb22a8d2f3ac

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.111-cip32
cip/6.1Fixed in 6.1.189-cip61
cip/6.1-rtFixed in 6.1.189-cip61-rt32
cip/5.10Fixed in 5.10.271-cip78
cip/5.10-rtAffected — no CIP fix yet (latest 5.10.268-cip77-rt34)
cip/4.19Affected — no CIP fix yet (latest 4.19.325-cip136)
cip/4.19-rtAffected — no CIP fix yet (latest 4.19.325-cip136-rt50)