CVE-2025-38196: io_uring/rsrc: validate buffer count with offset for cloning

Published Jul 4, 2025
·
Updated

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

iouring/rsrc: validate buffer count with offset for cloning

syzbot reports that it can trigger a WARNON() for kmalloc() attempt that's too big:

WARNING: CPU: 0 PID: 6488 at mm/slub.c:5024 kvmallocnodenoprof+0x520/0x640 mm/slub.c:5024 Modules linked in: CPU: 0 UID: 0 PID: 6488 Comm: syz-executor312 Not tainted 6.15.0-rc7-syzkaller-gd7fa1af5b33e #0 PREEMPT Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025 pstate: 20400005 (nzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : kvmallocnodenoprof+0x520/0x640 mm/slub.c:5024 lr : dokmallocnode mm/slub.c:-1 [inline] lr : kvmallocnodenoprof+0x3b4/0x640 mm/slub.c:5012 sp : ffff80009cfd7a90 x29: ffff80009cfd7ac0 x28: ffff0000dd52a120 x27: 0000000000412dc0 x26: 0000000000000178 x25: ffff7000139faf70 x24: 0000000000000000 x23: ffff800082f4cea8 x22: 00000000ffffffff x21: 000000010cd004a8 x20: ffff0000d75816c0 x19: ffff0000dd52a000 x18: 00000000ffffffff x17: ffff800092f39000 x16: ffff80008adbe9e4 x15: 0000000000000005 x14: 1ffff000139faf1c x13: 0000000000000000 x12: 0000000000000000 x11: ffff7000139faf21 x10: 0000000000000003 x9 : ffff80008f27b938 x8 : 0000000000000002 x7 : 0000000000000000 x6 : 0000000000000000 x5 : 00000000ffffffff x4 : 0000000000400dc0 x3 : 0000000200000000 x2 : 000000010cd004a8 x1 : ffff80008b3ebc40 x0 : 0000000000000001 Call trace: kvmallocnodenoprof+0x520/0x640 mm/slub.c:5024 (P) kvmallocarraynodenoprof include/linux/slab.h:1065 [inline] iorsrcdataalloc iouring/rsrc.c:206 [inline] ioclonebuffers iouring/rsrc.c:1178 [inline] ioregisterclonebuffers+0x484/0xa14 iouring/rsrc.c:1287 iouringregister iouring/register.c:815 [inline] dosysiouringregister iouring/register.c:926 [inline] sesysiouringregister iouring/register.c:903 [inline] arm64sysiouringregister+0x42c/0xea8 iouring/register.c:903 invokesyscall arch/arm64/kernel/syscall.c:35 [inline] invokesyscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:49 el0svccommon+0x130/0x23c arch/arm64/kernel/syscall.c:132 doel0svc+0x48/0x58 arch/arm64/kernel/syscall.c:151 el0svc+0x58/0x17c arch/arm64/kernel/entry-common.c:767 el0t64synchandler+0x78/0x108 arch/arm64/kernel/entry-common.c:786 el0t64sync+0x198/0x19c arch/arm64/kernel/entry.S:600

which is due to offset + buffercount being too large. The registration code checks only the total count of buffers, but given that the indexing is an array, it should also check offset + count. That can't exceed IORINGMAXREGBUFFERS either, as there's no way to reach buffers beyond that limit.

There's no issue with registrering a table this large, outside of the fact that it's pointless to register buffers that cannot be reached, and that it can trigger this kmalloc() warning for attempting an allocation that is too large.

Affected Software

4 affected components
Linux Kernel
Linux Linux kernel>=6.13<6.15.4
Linux Linux kernel=6.16-rc1
Linux Linux kernel=6.16-rc2

Event History

Jul 4, 2025
CVE Published
via MITRE·01:37 PM
Data Sourced
via MITRE·01:37 PM
Description
Data Sourced
via NVD·02:15 PM
RemedyDescriptionSeverityAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2025-38196?

CVE-2025-38196 has been classified with a severity level that indicates it can lead to significant issues with memory allocation in the Linux kernel.

2

How do I fix CVE-2025-38196?

To fix CVE-2025-38196, update your Linux kernel to the latest stable version that addresses this vulnerability.

3

What systems are affected by CVE-2025-38196?

CVE-2025-38196 affects various versions of the Linux kernel, particularly those utilizing the io_uring feature.

4

What is io_uring in relation to CVE-2025-38196?

io_uring is a Linux kernel interface that enables asynchronous I/O operations, and CVE-2025-38196 addresses vulnerabilities in its resource management.

5

What are the potential consequences of CVE-2025-38196?

The potential consequences of CVE-2025-38196 include system instability and crashes due to improper memory allocation handling.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203