Skip to main content
Vulnerability Database/CVE-2026-89857

CVE-2026-89857: Linux Kernel SCSI Race Condition Vulnerability

CVE-2026-89857 is a race condition flaw in the Linux kernel SCSI qla2xxx driver affecting NVMe LS reject handling. This vulnerability can corrupt ring producer state and lead to command issues. This article covers technical details, affected versions, impact assessment, and mitigation strategies.

Published:

CVE-2026-89857 Overview

CVE-2026-89857 is a race condition in the Linux kernel's qla2xxx SCSI driver affecting NVMe over Fibre Channel (NVMe-FC) transport. The flaw exists in qla_nvme_ls_reject_iocb(), which advances the request ring and rings the request-in doorbell without holding the required producer lock. Two callers invoke the helper without the hardware_lock held, allowing concurrent execution with normal I/O submission on the base ring. The result is corruption of ring producer state, leading to duplicated or dropped SCSI/NVMe commands on Fibre Channel host bus adapters using the QLogic driver.

Critical Impact

Concurrent access to the request ring producer state can corrupt in-flight command submission, causing duplicated or dropped commands on affected Fibre Channel HBAs.

Affected Products

  • Linux kernel — drivers/scsi/qla2xxx NVMe LS reject code path
  • Systems using QLogic Fibre Channel HBAs with NVMe-FC transport enabled
  • Distributions shipping unpatched stable kernel branches referenced in the upstream fix commits

Discovery Timeline

  • 2026-09-16 - CVE-2026-89857 published to NVD
  • 2026-09-16 - Last updated in NVD database

Technical Details for CVE-2026-89857

Vulnerability Analysis

The vulnerability resides in the qla_nvme_ls_reject_iocb() helper in the qla2xxx driver. This helper allocates from and advances the request ring through __qla2x00_alloc_iocbs(), which assumes the hardware_lock is held, and qla2x00_start_iocbs(), which advances the ring and rings the request-in doorbell. The helper itself takes no lock.

Two callers invoke the helper without the producer lock held. The first is qla_nvme_xmt_ls_rsp(), the NVMe-FC .xmt_ls_rsp transport callback, on its error path. The second is qla2xxx_process_purls_pkt(), which runs from the purex work and DPC context. Both use ha->base_qpair, whose qp_lock_ptr is the hardware_lock.

Because these paths execute without the qpair lock, they can run concurrently with normal I/O submission on the base ring. This corrupts the ring producer index and related state.

Root Cause

The root cause is a missing lock acquisition around ring producer manipulation. The helper documents no locking contract, and two of its three callers violate the implicit requirement that the hardware_lock be held. The third caller, qla2xxx_process_purls_iocb(), runs inside qla24xx_process_response_queue() with the qpair lock already held, which is why the lock cannot be acquired inside the helper itself without triggering recursive re-acquisition on the response path.

Attack Vector

Exploitation requires the ability to induce NVMe-FC Link Service traffic that triggers the reject path or purex processing on a target host with qla2xxx-managed HBAs. On systems processing Fibre Channel fabric traffic, malformed or unexpected LS requests can drive the vulnerable code paths concurrently with routine I/O, corrupting the producer ring and producing duplicated or dropped commands. This can manifest as data integrity issues or denial of service at the storage layer.

No public proof-of-concept is available, and no active exploitation has been reported.

Detection Methods for CVE-2026-89857

Indicators of Compromise

  • Kernel log messages from qla2xxx reporting request ring inconsistencies, IOCB allocation failures, or unexpected NVMe LS handling errors on affected HBAs.
  • Storage-layer symptoms including duplicated SCSI/NVMe completions, dropped commands, or unexplained I/O timeouts on Fibre Channel LUNs.
  • Application or filesystem errors correlating with periods of high NVMe-FC LS traffic.

Detection Strategies

  • Inventory Linux hosts running the qla2xxx driver with NVMe-FC enabled and compare running kernel versions against patched stable branches referenced in the upstream commits.
  • Correlate storage-path errors with concurrent Fibre Channel fabric events, particularly LS requests processed through the purex work or DPC context.
  • Monitor dmesg and journald for qla2xxx warnings tied to qla_nvme_ls_reject_iocb, qla2xxx_process_purls_pkt, or IOCB ring state.

Monitoring Recommendations

  • Forward kernel logs from Fibre Channel storage hosts to a centralized logging platform and alert on qla2xxx ring or IOCB errors.
  • Track SAN switch counters for anomalous LS traffic volumes directed at hosts using QLogic HBAs.
  • Baseline NVMe-FC error and retry counters through nvme-cli and vendor tooling, alerting on sudden deviations.

How to Mitigate CVE-2026-89857

Immediate Actions Required

  • Apply the upstream Linux kernel patches that take qp_lock_ptr around the two previously unlocked callers and document the helper as caller-locked.
  • Update to a distribution kernel that includes the referenced stable commits for the qla2xxx NVMe LS reject fix.
  • Reboot affected Fibre Channel storage hosts after kernel updates to activate the patched driver.

Patch Information

The fix acquires qp_lock_ptr using spin_lock_irqsave() around both unlocked callers, since both run in process context and nothing in the locked region sleeps. The helper is now documented as caller-locked. Refer to the upstream commits: Kernel Commit Overview, Kernel Commit Changes, Kernel Commit Summary, Kernel Commit Revision, and Kernel Commit Update.

Workarounds

  • Where patching is delayed and NVMe-FC is not required, unload the qla2xxx NVMe support or disable NVMe-FC transport to eliminate the vulnerable code paths.
  • Restrict fabric zoning so that only trusted initiators and targets can exchange LS traffic with affected hosts.
  • Increase monitoring on Fibre Channel storage hosts to detect ring corruption symptoms and quiesce workloads if inconsistencies appear.

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.