Get a Demo

Let's Patch It!

Book a short call with one our specialists, we'll walk you through how Endor Patches work, and ask you a few questions about your environment (like your primary programming languages and repository management). We'll also send you an email right after you fill out the form, feel free to reply with any questions you have in advance!

CVE

CVE-2026-89857

scsi: qla2xxx: Hold qpair lock when sending NVMe LS reject
Back to all
CVE

CVE-2026-89857

scsi: qla2xxx: Hold qpair lock when sending NVMe LS reject

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

scsi: qla2xxx: Hold qpair lock when sending NVMe LS reject

qlanvmelsrejectiocb() allocates from and advances the request ring

through _qla2x00allociocbs() (which assumes the hardwarelock is

held) and qla2x00startiocbs() (which advances the ring and rings the

request-in doorbell), but takes no lock itself. Two of its callers

invoke it without the producer lock held:

  • qlanvmexmtlsrsp(), the NVMe-FC .xmtlsrsp transport callback, on

   its error path, and

  • qla2xxxprocesspurls_pkt(), run from the purex work/DPC context.

Both use ha->baseqpair, whose qplockptr is hardwarelock, so they can

run concurrently with normal I/O submission on the base ring and corrupt

the ring producer state, leading to duplicated or dropped commands. The

third caller, qla2xxxprocesspurls_iocb(), runs inside

qla24xxprocessresponse_queue() with the qpair lock already held and is

safe; that is also why the lock cannot be taken inside the helper itself

(it would recursively re-acquire hardware_lock on the response path).

Take qplockptr around the two unlocked callers and document the helper

as caller-locked. Both run in process context, so spinlockirqsave() is

used and nothing in the locked region sleeps.

Package Versions Affected

Package Version
patch Availability
No items found.

Automatically patch vulnerabilities without upgrading

Fix Without Upgrading
Detect compatible fix
Apply safe remediation
Fix with a single pull request

CVSS Version

Severity
Base Score
CVSS Version
Score Vector
C
H
U
9.8
-
3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
C
H
U
0
-
3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
C
H
U
-

Related Resources

No items found.

References

https://git.kernel.org/stable/c/11834e5773e20fd3742d7eb900876e66b9e7d029, https://git.kernel.org/stable/c/7eb618877503edbf17aa65e357a81bda1fc8f163, https://git.kernel.org/stable/c/b02ff132017b28222187ebcf95ce7f4cb576cd36, https://git.kernel.org/stable/c/b3a362466db6b8ec47cc537ac641ac197fa69b5d, https://git.kernel.org/stable/c/f743488e4a203049f27ec5d8cd0caccc483af01e, https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/89xxx/CVE-2026-89857.json, https://nvd.nist.gov/vuln/detail/CVE-2026-89857, https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Severity

9.8

CVSS Score
0
10

Basic Information

Base CVSS
9.8
EPSS Probability
0.00671%
EPSS Percentile
0.50636%
Introduced Version
875386b98857822b77ac7f95bdf367b70af5b78c,6.6.0,6.7.0,6.13.0,6.19.0,0
Fix Available
f743488e4a203049f27ec5d8cd0caccc483af01e,6.6.157,6.12.110,6.18.51,7.2.5,6.12.111-1~deb12u1,6.12.111-1,0:6.12.0-207.111.5.1.el9uek,0:6.12.0-207.111.5.1.el10uek

Fix Critical Vulnerabilities Instantly

Secure your app without upgrading.
Fix Without Upgrading