data built 2026-10-19T13:16:53Z

Look up another CVE · open CVE-2026-89863 in the interactive tracker

CVE-2026-89863

scsi: qla2xxx: edif: Fix NULL pointer deref in RX SA delete check

7.5 EPSS 0.7% AV:N

Published 2026-09-16 (33 days ago) by the Linux kernel CNA. Subsystem drivers/scsi. Debian urgency: not yet assigned.

What to do, per Debian release

Debian's own status for CVE-2026-89863 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source

ReleaseStatus VersionWhat this means
Debian 12bookwormfixedDLA-4841-1 · 2026-10-17 · text6.1.190-1Update the kernel and reboot. DLA-4841-1 shipped the fix on 2026-10-17, in 6.1.190-1. A running kernel keeps the old code until the machine restarts.
Debian 13trixiefixedDSA-6528-1 · 2026-09-29 · text6.12.111-1Update the kernel and reboot. DSA-6528-1 shipped the fix on 2026-09-29, in 6.12.111-1. A running kernel keeps the old code until the machine restarts.
Debian 14forkyfixed7.2.6-1Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.2.6-1Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts.
Debian 12bookworm · linux-6.12fixedDLA-4817-1 · 2026-10-04 · text6.12.111-1~deb12u1Update the kernel and reboot. DLA-4817-1 shipped the fix on 2026-10-04, in 6.12.111-1~deb12u1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

qla_chk_edif_rx_sa_delete_pending() obtains the SCSI command via GET_CMD_SP(sp) and immediately dereferences cmd->sc_data_direction. That command pointer can be NULL: the firmware may post a status completion for a command that has already been returned or aborted. The caller qla2x00_status_entry() acknowledges this on the very same status path, re-fetching GET_CMD_SP(sp) and bailing out with the "Command already returned" message when it is NULL -- but that check runs only after qla_chk_edif_rx_sa_delete_pending() has already dereferenced the pointer, so a NULL cmd crashes the kernel in interrupt context. Return early when cmd is NULL, before touching cmd->sc_data_direction.

Where it lives

The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.

drivers/scsi/qla2xxx/qla_edif.c

What this is
QLOGIC QLA2XXX FC-SCSI DRIVERMAINTAINERS section matched on drivers/scsi/qla2xxx/ · linux-scsi@vger.kernel.org · Supported
Kernel module
qla2xxx

Check it on the machine

grep -w CONFIG_SCSI_QLA_FC /boot/config-$(uname -r)

Reads the booted kernel's own configuration, on the machine and nowhere else. =y is built in, =m is a module, and an is not set line means the code is not there.

lsmod | grep -w qla2xxx

Prints a line if that module is loaded right now, and nothing if it is not. One that is not loaded can still be loaded later by anything that needs it.

Show whether Debian builds this, per release

Debian builds this, but not on every flavour. At least one release below builds the code on some of its kernel flavours and not on others, so the answer depends on the architecture and flavour installed.

  • bookwormMnot built on amd64/cloud-amd64, arm64/cloud-arm64, armhf/armmp, armhf/armmp-lpae, armhf/rt/armmp
  • trixieMnot built on amd64/cloud-amd64, arm64/cloud-arm64, armel/rpi, armhf/armmp, armhf/armmp-lpae, armhf/rt/armmp, s390x/s390x
  • forky, sidMnot built on amd64/cloud-amd64, arm64/cloud-arm64, armhf/armmp, armhf/armmp-lpae, s390x/s390x
  • bookworm · linux-6.12Mnot built on amd64/cloud-amd64, arm64/cloud-arm64, armhf/armmp, armhf/armmp-lpae, armhf/rt/armmp
M
a module where it is built at all; some flavours do not build it
Build switch
CONFIG_SCSI_QLA_FC

From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS kbuild Makefiles Debian linux-config packages

Signals

Published
2026-09-16 (33 days ago)source
CVSS
7.5 high
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:Hsource recompute it
Attack vector
network (AV:N)source
EPSS
0.67%, higher than 51.0% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
not yet assignedsource
Subsystem
drivers/scsi

Upstream fixes

The versions the CNA records as introducing and fixing this, and the commit for each. source

IntroducedFixed inCommit
5.155.15.221e479e9b14845
5.156.1.1882191b0034a2f
5.156.6.157de0c8ef3b900
5.156.12.11096eb8a3fc9f7
5.156.18.5194bfb61478bc
5.157.2.575fd6d041c4a
5.157.3c20ee380ca59

Debian advisories

AdvisoryDateShipped toDebian
DLA-4841-12026-10-17bookworm 6.1.190-1tracker
DLA-4817-12026-10-04bookworm 6.12.111-1~deb12u1tracker
DSA-6528-12026-09-29trixie 6.12.111-1tracker

Why the CNA scored it this way

Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source

AV:NAttack vector, network
qla_chk_edif_rx_sa_delete_pending() runs from qla2x00_status_entry() on STATUS_TYPE IOCBs the HBA firmware posts from a remote Fibre Channel or FCoE target's FCP_RSP. QLogic CNAs speak FCoE and SAN fabrics are stretched via FCIP, so a compromised target delivers late completions over the storage network with no local access.
AC:LAttack complexity, low
A hostile target controls FCP_RSP timing and can delay a response until SCSI error handling aborts and returns the command, then complete so firmware posts status for a NULL cmd. The same function already handles that case ("Command already returned"); the crash is then deterministic and needs no rare config or layout beyond a qla2xxx HBA.
PR:NPrivileges required, none
Completions are handled in the HBA interrupt/response-queue path (qla24xx_process_response_queue to qla2x00_status_entry) with no Linux credential or capability check; the attacker only needs to act as an FC/FCoE target on the fabric.
UI:NUser interaction, none
Once the target is visible on the fabric, the SCSI midlayer automatically issues commands (scan, path checks, mounted-filesystem I/O) whose STATUS_TYPE completions take the vulnerable path; no user mount, open, or other interactive step is required at exploit time.
S:UScope, unchanged
The NULL dereference and resulting oops stay inside the host kernel that owns the qla2xxx driver and do not cross a VM, IOMMU, or other separate security authority.
C:NConfidentiality impact, none
This is a pure NULL-pointer dereference of GET_CMD_SP(sp) (cmd->sc_data_direction at a NULL-page offset) when the SCSI command was already returned or aborted. There is no use-after-free of a live object, out-of-bounds read, or other kernel memory disclosure primitive.
I:NIntegrity impact, none
The cmd pointer is NULL, not a freed or attacker-controlled object, so the load cannot corrupt kernel heap, overwrite function pointers, or hijack control flow. The fix is only an early NULL return; there is no write primitive.
A:HAvailability impact, high
Dereferencing NULL cmd in qla_chk_edif_rx_sa_delete_pending() from the response-queue interrupt or qla_do_work() context oopses or panics the host, taking down all storage served by the adapter. A fabric peer can repeat this on aborted I/O.