CVE-2026-23244

Source
https://cve.org/CVERecord?id=CVE-2026-23244
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-23244.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-23244
Downstream
Published
2026-03-18T10:05:06.534Z
Modified
2026-04-02T13:12:17.431424Z
Summary
nvme: fix memory allocation in nvme_pr_read_keys()
Details

In the Linux kernel, the following vulnerability has been resolved:

nvme: fix memory allocation in nvmeprread_keys()

nvmeprreadkeys() takes numkeys from userspace and uses it to calculate the allocation size for rse via structsize(). The upper limit is PRKEYS_MAX (64K).

A malicious or buggy userspace can pass a large numkeys value that results in a 4MB allocation attempt at most, causing a warning in the page allocator when the order exceeds MAXPAGE_ORDER.

To fix this, use kvzalloc() instead of kzalloc().

This bug has the same reasoning and fix with the patch below: https://lore.kernel.org/linux-block/20251212013510.3576091-1-kartikey406@gmail.com/

Warning log: WARNING: mm/page_alloc.c:5216 at __allocfrozenpagesnoprof+0x5aa/0x2300 mm/pagealloc.c:5216, CPU#1: syz-executor117/272 Modules linked in: CPU: 1 UID: 0 PID: 272 Comm: syz-executor117 Not tainted 6.19.0 #1 PREEMPT(voluntary) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014 RIP: 0010:__allocfrozenpages_noprof+0x5aa/0x2300 mm/pagealloc.c:5216 Code: ff 83 bd a8 fe ff ff 0a 0f 86 69 fb ff ff 0f b6 1d f9 f9 c4 04 80 fb 01 0f 87 3b 76 30 ff 83 e3 01 75 09 c6 05 e4 f9 c4 04 01 <0f> 0b 48 c7 85 70 fe ff ff 00 00 00 00 e9 8f fd ff ff 31 c0 e9 0d RSP: 0018:ffffc90000fcf450 EFLAGS: 00010246 RAX: 0000000000000000 RBX: 0000000000000000 RCX: 1ffff920001f9ea0 RDX: 0000000000000000 RSI: 000000000000000b RDI: 0000000000040dc0 RBP: ffffc90000fcf648 R08: ffff88800b6c3380 R09: 0000000000000001 R10: ffffc90000fcf840 R11: ffff88807ffad280 R12: 0000000000000000 R13: 0000000000040dc0 R14: 0000000000000001 R15: ffffc90000fcf620 FS: 0000555565db33c0(0000) GS:ffff8880be26c000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 000000002000000c CR3: 0000000003b72000 CR4: 00000000000006f0 Call Trace: <TASK> allocpagesmpol+0x236/0x4d0 mm/mempolicy.c:2486 allocfrozenpagesnoprof+0x149/0x180 mm/mempolicy.c:2557 ___kmalloclargenode+0x10c/0x140 mm/slub.c:5598 __kmalloclargenode_noprof+0x25/0xc0 mm/slub.c:5629 __dokmallocnode mm/slub.c:5645 [inline] __kmallocnoprof+0x483/0x6f0 mm/slub.c:5669 kmallocnoprof include/linux/slab.h:961 [inline] kzallocnoprof include/linux/slab.h:1094 [inline] nvmepr_readkeys+0x8f/0x4c0 drivers/nvme/host/pr.c:245 blkdevprreadkeys block/ioctl.c:456 [inline] blkdevcommonioctl+0x1b71/0x29b0 block/ioctl.c:730 blkdevioctl+0x299/0x700 block/ioctl.c:786 vfsioctl fs/ioctl.c:51 [inline] __dosysioctl fs/ioctl.c:597 [inline] __sesysioctl fs/ioctl.c:583 [inline] _x64sysioctl+0x1bf/0x220 fs/ioctl.c:583 x64syscall+0x1280/0x21b0 mnt/fuzznvme1/fuzznvme/linux-build/v6.19/./arch/x86/include/generated/asm/syscalls64.h:17 dosyscallx64 arch/x86/entry/syscall64.c:63 [inline] dosyscall64+0x71/0x330 arch/x86/entry/syscall64.c:94 entrySYSCALL64afterhwframe+0x76/0x7e RIP: 0033:0x7fb893d3108d Code: 28 c3 e8 46 1e 00 00 66 0f 1f 44 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007ffff61f2f38 EFLAGS: 00000246 ORIGRAX: 0000000000000010 RAX: ffffffffffffffda RBX: 00007ffff61f3138 RCX: 00007fb893d3108d RDX: 0000000020000040 RSI: 00000000c01070ce RDI: 0000000000000003 RBP: 0000000000000001 R08: 0000000000000000 R09: 00007ffff61f3138 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001 R13: 00007ffff61f3128 R14: 00007fb893dae530 R15: 0000000000000001 </TASK>

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/23xxx/CVE-2026-23244.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
5fd96a4e15de8442915a912233d800c56f49001d
Fixed
e42ff5abbd14927553b624c0e06d24df76156fe6
Fixed
15fb6d627484ee39ed73e202ef4720e1fa5c898e
Fixed
5a501379a010690ae9ae88bef62a1bae1aca32e6
Fixed
baef52d80093bd686e70b3cb7e0512a40ae76705
Fixed
c3320153769f05fd7fe9d840cb555dd3080ae424

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-23244.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
6.5.0
Fixed
6.6.130
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.77
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.17
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
6.19.7

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-23244.json"