PatchSiren

PatchSiren cyber security CVE debrief

CVE-2026-23244 Linux CVE debrief

CVE-2026-23244 is a Linux kernel issue in nvme_pr_read_keys() where a user-controlled num_keys value is used to size an allocation via struct_size(). With the existing PR_KEYS_MAX upper bound, a large input can still drive an allocation attempt of up to about 4 MB, which in turn can trigger allocator warnings when the requested order exceeds MAX_PAGE_ORDER. The kernel fix switches the allocation to kvzalloc().

Vendor
Linux
Product
Unknown
CVSS
HIGH 7.1
CISA KEV
Not listed in stored evidence
Original CVE published
2026-03-18
Original CVE updated
2026-05-21
Advisory published
2026-03-18
Advisory updated
2026-05-21

Who should care

Linux kernel and distro maintainers, operators of systems that expose NVMe block-device persistent reservation ioctls, and administrators who allow untrusted local users to interact with affected kernel builds.

Technical summary

The vulnerable path is in drivers/nvme/host/pr.c: nvme_pr_read_keys() receives num_keys from userspace and uses it to compute an allocation size. The source record states that the upper limit is PR_KEYS_MAX (64K), but a malicious or buggy caller can still cause an oversized allocation attempt that may exceed the page allocator’s preferred order. The fix is to replace kzalloc() with kvzalloc(), which is better suited for larger allocations. NVD maps the issue to affected Linux kernel branches and rates it CVSS 3.1 HIGH (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H).

Defensive priority

High. Apply the kernel fix promptly on affected Linux kernel branches, especially on hosts where local users can reach NVMe persistent reservation ioctls or where kernel stability is a priority.

Recommended defensive actions

  • Upgrade to a Linux kernel release that includes the fix or the relevant stable backport.
  • Review affected kernel branches listed by NVD and ensure each deployed branch is patched.
  • If immediate upgrading is not possible, reduce exposure to NVMe persistent reservation ioctls for untrusted local users where operationally feasible.
  • Monitor for allocator warnings or unusual NVMe persistent reservation ioctl activity on affected systems.
  • Track vendor stable backports referenced in the official kernel patch links and confirm they are present in your build lineage.

Evidence notes

Source description: nvme_pr_read_keys() consumes userspace-controlled num_keys, computes allocation size with struct_size(), and can attempt up to a 4 MB allocation under the PR_KEYS_MAX (64K) cap. The stated fix is to use kvzalloc() instead of kzalloc(). The supplied kernel warning shows the path through nvme_pr_read_keys() and kzalloc_noprof() into the page allocator. NVD marks the issue analyzed, lists Linux kernel CPE ranges across multiple branches, and assigns CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H. The supplied corpus does not indicate KEV inclusion.

Official resources

CVE published on 2026-03-18T11:16:16.270Z and last modified on 2026-05-21T15:55:29.250Z. The supplied source record and NVD metadata use those dates as the disclosure/timeline anchors.