CVE-2026-89856scsi: qla2xxx: Clamp MSI-X derived queue counts to avoid truncation
Updated under an hour ago ()
Does this affect you?
It affects Linux. Add what you run to find out whether that includes you.
No exploitation reported and no EPSS estimate yet.
Do this next
Free account, 1 product
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).
- CVSS
- 8.4 HIGH (v3.1, CNA)CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Weakness (CWE)
- Not given
- Known exploited
- Not in CISA's KEV catalog
- EPSS (exploitation in the next 30 days)
- Not loaded for this CVE
- Assigned by
- Linux
- NVD analysis
- Received
- Record last updated
- Sep 16, 2026
- First seen by InfoSec Signals
- Oct 9, 2026
Affected products
Linux Linux linux:linux (from the name) | from d74595278f4ab192af66d9e60a9087464638beee before cf623d32761b00f221a9cfded3303d56e84b429d; from d74595278f4ab192af66d9e60a9087464638beee before 9eeddbeaa896f39d943644b16d83a6ad0ceab255; from d74595278f4ab192af66d9e60a9087464638beee before 802068b9b683b8008fcccbf6e9ad133e597ec87c; from d74595278f4ab192af66d9e60a9087464638beee before e80adfeac61b4d5db7ffe0f5af43999c33a4145e; from d74595278f4ab192af66d9e60a9087464638beee before 2efe50b2da829909023de4a2eb87badb7cfa53cc; from d74595278f4ab192af66d9e60a9087464638beee before 7a448f5ed0b283dbde4e9183dd1e98c221432dab; from d74595278f4ab192af66d9e60a9087464638beee before 33c77254e6e91f37c72c7fad4051777452b10de8; from d74595278f4ab192af66d9e60a9087464638beee before ebfd35c64433821bd5619a6d07ccc2df8b5b1de3 | CNA record |
References
- https://git.kernel.org/stable/c/cf623d32761b00f221a9cfded3303d56e84b429d
- https://git.kernel.org/stable/c/9eeddbeaa896f39d943644b16d83a6ad0ceab255
- https://git.kernel.org/stable/c/802068b9b683b8008fcccbf6e9ad133e597ec87c
- https://git.kernel.org/stable/c/e80adfeac61b4d5db7ffe0f5af43999c33a4145e
- https://git.kernel.org/stable/c/2efe50b2da829909023de4a2eb87badb7cfa53cc
- https://git.kernel.org/stable/c/7a448f5ed0b283dbde4e9183dd1e98c221432dab
- https://git.kernel.org/stable/c/33c77254e6e91f37c72c7fad4051777452b10de8
- https://git.kernel.org/stable/c/ebfd35c64433821bd5619a6d07ccc2df8b5b1de3
The CVE record on cve.org NVD's entry
The CVE record is authoritative. Products marked “from the name” were identified from the CNA's free-text names, not a CPE, and are matched less certainly. This product uses the NVD API but is not endorsed or certified by the NVD.