CVE-2026-89856

scsi: qla2xxx: Clamp MSI-X derived queue counts to avoid truncation

HIGH
8.4
CVSS Score
Published: September 16, 2026 at 10:31 AM UTC
Updated: October 19, 2026 at 09:18 AM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
HIGH8.4
Exploit prediction
EPSS 0.2%

Description

In the Linux kernel, the following vulnerability has been resolved: scsi: qla2xxx: Clamp MSI-X derived queue counts to avoid truncation ha->msix_count is u16, but ha->max_req_queues, ha->max_rsp_queues and ha->max_qpairs are u8. Deriving the queue count as "ha->max_req_queues = ha->msix_count - 1" therefore truncates: a board (or a misconfigured/malicious hot-plugged device) advertising 257 MSI-X vectors yields msix_count - 1 == 256, which truncates to 0. An MSI-X count of 1 zeroes it as well, and in target mode the subsequent "ha->max_req_queues--" then underflows 0 to 255. When the count is 0, qla2x00_alloc_queues() calls kzalloc_objs(struct req_que *, 0), which returns ZERO_SIZE_PTR. That is not NULL, so the allocation check passes and the following "ha->req_q_map[0] = req" dereferences ZERO_SIZE_PTR, corrupting memory or crashing the kernel. Add qla_calc_queue_count() to clamp the derived value into [1, QLA_MAX_QUEUES - 1] so it always fits in u8 and is never zero, and use it at all three derivation sites (qla25xx_iospace_config(), qla83xx_iospace_config() and qla24xx_enable_msix()). Also guard the target-mode decrement so it cannot reintroduce a zero (which would in turn underflow max_qpairs).

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

4.10d74595278f4ab192af66d9e60a9087464638beee
Vendor states this is fixed in 2efe50b2da829909023de4a2eb87badb7cfa53cc (fixed)
Vendor states this is fixed in 33c77254e6e91f37c72c7fad4051777452b10de8 (fixed)
Vendor states this is fixed in 7a448f5ed0b283dbde4e9183dd1e98c221432dab (fixed)
Vendor states this is fixed in 802068b9b683b8008fcccbf6e9ad133e597ec87c (fixed)
Vendor states this is fixed in 9eeddbeaa896f39d943644b16d83a6ad0ceab255 (fixed)
Vendor states this is fixed in cf623d32761b00f221a9cfded3303d56e84b429d (fixed)
Vendor states this is fixed in e80adfeac61b4d5db7ffe0f5af43999c33a4145e (fixed)
Vendor states this is fixed in ebfd35c64433821bd5619a6d07ccc2df8b5b1de3 (fixed)
Vendor states this is fixed in 4.10 (unaffected)
Vendor states this is fixed in 5.10.270 (unaffected)
Vendor states this is fixed in 5.15.221 (unaffected)
Vendor states this is fixed in 6.1.188 (unaffected)
Vendor states this is fixed in 6.12.110 (unaffected)
Vendor states this is fixed in 6.18.51 (unaffected)
Vendor states this is fixed in 6.6.157 (unaffected)
Vendor states this is fixed in 7.2.5 (unaffected)
Vendor states this is fixed in 7.3 (unaffected)
Vendor states this is fixed in 7.3-rc1 (unaffected)

Remediation

No guide yet

No remediation guidance has been written for this CVE yet, and no fixed version or vendor advisory is recorded against it.

CVSS

8.4HIGHLinux
Vector?

Quick Info

StatusRECEIVED

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card