CVE-2025-40290: xsk: avoid data corruption on cq descriptor number

Published Dec 8, 2025
·
Updated

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

xsk: avoid data corruption on cq descriptor number

Since commit 30f241fcf52a ("xsk: Fix immature cq descriptor production"), the descriptor number is stored in skb control block and xskcqsubmitaddrlocked() relies on it to put the umem addrs onto pool's completion queue.

skb control block shouldn't be used for this purpose as after transmit xsk doesn't have control over it and other subsystems could use it. This leads to the following kernel panic due to a NULL pointer dereference.

BUG: kernel NULL pointer dereference, address: 0000000000000000 #PF: supervisor read access in kernel mode #PF: errorcode(0x0000) - not-present page PGD 0 P4D 0 Oops: Oops: 0000 [#1] SMP NOPTI CPU: 2 UID: 1 PID: 927 Comm: p4xsk.bin Not tainted 6.16.12+deb14-cloud-amd64 #1 PREEMPT(lazy) Debian 6.16.12-1 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.17.0-debian-1.17.0-1 04/01/2014 RIP: 0010:xskdestructskb+0xd0/0x180 [...] Call Trace: <IRQ> ? napicompletedone+0x7a/0x1a0 iprcvcore+0x1bb/0x340 iprcv+0x30/0x1f0 netifreceiveskbonecore+0x85/0xa0 processbacklog+0x87/0x130 napipoll+0x28/0x180 netrxaction+0x339/0x420 handlesoftirqs+0xdc/0x320 ? handleedgeirq+0x90/0x1e0 dosoftirq.part.0+0x3b/0x60 </IRQ> <TASK> localbhenableip+0x60/0x70 devdirectxmit+0x14e/0x1f0 xskgenericxmit+0x482/0xb70 ? removehrtimer+0x41/0xa0 ? xskgenericxmit+0x51/0xb70 ? rawspinunlockirqrestore+0xe/0x40 xsksendmsg+0xda/0x1c0 syssendto+0x1ee/0x200 x64syssendto+0x24/0x30 dosyscall64+0x84/0x2f0 ? pfxpollwake+0x10/0x10 ? rseqhandlenotifyresume+0xad/0x4c0 ? restorefpregsfromfpstate+0x3c/0x90 ? switchfpureturn+0x5b/0xe0 ? dosyscall64+0x204/0x2f0 ? dosyscall64+0x204/0x2f0 ? dosyscall64+0x204/0x2f0 entrySYSCALL64afterhwframe+0x76/0x7e </TASK> [...] Kernel panic - not syncing: Fatal exception in interrupt Kernel Offset: 0x1c000000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)

Instead use the skb destructorarg pointer along with pointer tagging. As pointers are always aligned to 8B, use the bottom bit to indicate whether this a single address or an allocated struct containing several addresses.

Affected Software

1 affected component
Linux Linux kernel

Event History

Dec 8, 2025
CVE Published
via MITRE·12:09 AM
Data Sourced
via MITRE·12:09 AM
DescriptionSeverity
Data Sourced
via NVD·01:16 AM
DescriptionSeverity

Frequently Asked Questions

1

What is the severity of CVE-2025-40290?

CVE-2025-40290 has been classified as a medium severity vulnerability.

2

How do I fix CVE-2025-40290?

To fix CVE-2025-40290, you should update your Linux kernel to version 6.16.12 or later.

3

What systems are affected by CVE-2025-40290?

CVE-2025-40290 affects systems running the Linux kernel version 6.16.12.

4

What does CVE-2025-40290 impact?

CVE-2025-40290 impacts the xsk implementation in the Linux kernel, potentially leading to data corruption.

5

Is CVE-2025-40290 an exploit already in the wild?

As of now, there are no public reports indicating that CVE-2025-40290 is actively being exploited in the wild.

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