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
6.184.116.18.51dd817463c9b4
7.24.117.2.5e20b16aa3b49
5.104.115.10.270f39e3ca1f688
6.14.116.1.1880205db768570
6.64.116.6.1572853ce9c88e0
mainline4.117.3-rc23f92a6454516
5.154.115.15.221a980dec7c699
6.124.116.12.110fb22a8d2f3ac
cip/6.124.116.12.111-cip32fb22a8d2f3ac