CVE-2026-23294
Use-After-Free Race in Linux Kernel BPF devmap on PREEMPT_RT
Publication date: 2026-03-25
Last updated on: 2026-04-02
Assigner: kernel.org
Description
Description
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| linux | linux_kernel | * |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-UNKNOWN |
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?
This vulnerability exists in the Linux kernel on PREEMPT_RT (real-time) kernels where the per-CPU xdp_dev_bulk_queue (bq) can be accessed concurrently by multiple preemptible tasks on the same CPU. The original code assumed that certain functions (bq_enqueue() and __dev_flush()) would run atomically on the same CPU, but on PREEMPT_RT kernels, preemption is not properly disabled, allowing concurrent access.
This concurrency leads to race conditions such as double-free or use-after-free of frames, corruption of queue counts and pointers, and orphaned frames due to improper synchronization. Specifically, one task can be preempted while transmitting frames, allowing another task to transmit and free the same frames, causing the first task to operate on freed memory.
The fix involves adding a local_lock_t to the xdp_dev_bulk_queue and acquiring this lock in both bq_enqueue() and __dev_flush() to serialize access and prevent these race conditions.
How can this vulnerability impact me? :
This vulnerability can lead to serious stability and security issues in systems running PREEMPT_RT Linux kernels. The race conditions may cause use-after-free and double-free bugs, which can result in kernel crashes, memory corruption, or unpredictable behavior.
Such memory corruption issues could potentially be exploited to execute arbitrary code in kernel context or cause denial of service, impacting system reliability and security.
What immediate steps should I take to mitigate this vulnerability?
The vulnerability is caused by a race condition in the Linux kernel's bpf devmap on PREEMPT_RT kernels. The fix involves adding a local_lock_t to xdp_dev_bulk_queue and acquiring it in bq_enqueue() and __dev_flush() to serialize access and prevent concurrent operations on the same per-CPU queue.
To mitigate this vulnerability immediately, you should update your Linux kernel to a version that includes this fix. This ensures that the local_lock_nested_bh() locking mechanism is in place, preventing the race conditions described.