CVE-2025-37920

xsk: Fix race condition in AF_XDP generic RX path

MEDIUM
4.7
CVSS Score
Published: May 20, 2025 at 03:21 PM UTC
Updated: October 15, 2026 at 10:18 PM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
MEDIUM4.7
Exploit prediction
EPSS 0.2%
SSVC
No known exploit

Description

In the Linux kernel, the following vulnerability has been resolved: xsk: Fix race condition in AF_XDP generic RX path Move rx_lock from xsk_socket to xsk_buff_pool. Fix synchronization for shared umem mode in generic RX path where multiple sockets share single xsk_buff_pool. RX queue is exclusive to xsk_socket, while FILL queue can be shared between multiple sockets. This could result in race condition where two CPU cores access RX path of two different sockets sharing the same umem. Protect both queues by acquiring spinlock in shared xsk_buff_pool. Lock contention may be minimized in the future by some per-thread FQ buffering. It's safe and necessary to move spin_lock_bh(rx_lock) after xsk_rcv_check(): * xs->pool and spinlock_init is synchronized by xsk_bind() -> xsk_is_bound() memory barriers. * xsk_rcv_check() may return true at the moment of xsk_release() or xsk_unbind_dev(), however this will not cause any data races or race conditions. xsk_unbind_dev() removes xdp socket from all maps and waits for completion of all outstanding rx operations. Packets in RX path will either complete safely or drop.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

5.1.20 ≤ v < 5.25.2.3 ≤ v < 6.12.286.13 ≤ v < 6.14.65.1.205.2.36.156.15 rc16.15 rc26.15 rc36.15 rc48a090e3b73eaffe18e08ccc3fb5abecf6b0a9781bf0bdd1343efbbf65b4d53aef1fce14acbd79d50fd7c22ba7a0ad898b9ecf77dd53f5ccc48492e35
Vendor states this is fixed in 65d3c570614b892257dc58a1b202908242ecf8fd (fixed)
Vendor states this is fixed in 75a240a3e8abf17b9e00b0ef0492b1bbaa932251 (fixed)
Vendor states this is fixed in 975b372313dc018b9bd6cc0d85d188787054b19e (fixed)
Vendor states this is fixed in a1356ac7749cafc4e27aa62c0c4604b5dca4983e (fixed)
Vendor states this is fixed in b6978c565ce33658543c637060852434b4248d30 (fixed)
Affected range stops below 5.2, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 5.3 (unaffected)
Vendor states this is fixed in 6.1.164 (unaffected)
Vendor states this is fixed in 6.12.28 (unaffected)
Vendor states this is fixed in 6.14.6 (unaffected)
Vendor states this is fixed in 6.15 (unaffected)
Vendor states this is fixed in 6.6.123 (unaffected)

SSVC — Action Prioritization

SSVCNo known exploitNot automatableTotal impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

Attack Vector
LOCAL
Complexity
HIGH
Privileges
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
NONE
Integrity
NONE
Availability
HIGH
Vector?

Quick Info

StatusMODIFIED
CWE
CWE-362

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card