CVE-2025-68169
Description
In the Linux kernel, the following vulnerability has been resolved:
netpoll: Fix deadlock in memory allocation under spinlock
Fix a AA deadlock in refill_skbs() where memory allocation while holding skb_pool->lock can trigger a recursive lock acquisition attempt.
The deadlock scenario occurs when the system is under severe memory pressure:
- refill_skbs() acquires skb_pool->lock (spinlock)
- alloc_skb() is called while holding the lock
- Memory allocator fails and calls slab_out_of_memory()
- This triggers printk() for the OOM warning
- The console output path calls netpoll_send_udp()
- netpoll_send_udp() attempts to acquire the same skb_pool->lock
- Deadlock: the lock is already held by the same CPU
Call stack: refill_skbs() spin_lock_irqsave(&skb_pool->lock) <- lock acquired __alloc_skb() kmem_cache_alloc_node_noprof() slab_out_of_memory() printk() console_flush_all() netpoll_send_udp() skb_dequeue() spin_lock_irqsave(&skb_pool->lock) <- deadlock attempt
This bug was exposed by commit 248f6571fd4c51 ("netpoll: Optimize skb refilling on critical path") which removed refill_skbs() from the critical path (where nested printk was being deferred), letting nested printk being called from inside refill_skbs()
Refactor refill_skbs() to never allocate memory while holding the spinlock.
Another possible solution to fix this problem is protecting the refill_skbs() from nested printks, basically calling printk_deferred_{enter,exit}() in refill_skbs(), then, any nested pr_warn() would be deferred.
I prefer this approach, given I _think_ it might be a good idea to move the alloc_skb() from GFP_ATOMIC to GFP_KERNEL in the future, so, having the alloc_skb() outside of the lock will be necessary step.
There is a possible TOCTOU issue when checking for the pool length, and queueing the new allocated skb, but, this is not an issue, given that an extra SKB in the pool is harmless and it will be eventually used.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
A double-lock (AA deadlock) in Linux netpoll's refill_skbs() under memory pressure can cause system hang, fixed by allocating skbs outside the spinlock.
Vulnerability
Overview
In the Linux kernel, a deadlock vulnerability exists in the netpoll subsystem's refill_skbs() function. The bug is an AA deadlock (recursive spinlock acquisition) triggered when the system is under severe memory pressure. The root cause is that refill_skbs() allocates memory (via alloc_skb()) while holding skb_pool->lock. If the allocation fails and the slab allocator emits an OOM warning via printk(), the console output path can call back into netpoll_send_udp(), which attempts to acquire the same skb_pool->lock that is already held by the same CPU, causing a deadlock [1].
Exploitation
Scenario
An attacker who can induce memory pressure on a system using netpoll (e.g., by exhausting system memory) could trigger this deadlock. The attack requires no special privileges; any local user or process that can consume memory may be able to force the OOM condition. The vulnerability was exposed by commit 248f6571fd4c51 ("netpoll: Optimize skb refilling on critical path"), which removed a prior mitigation that deferred nested printk, allowing the recursive lock attempt to occur [1].
Impact and
Mitigation
The impact is a denial of service (system hang) on systems that use netpoll, such as those running network consoles or high-availability network configurations. The fix refactors refill_skbs() to never allocate memory while holding the spinlock, eliminating the deadlock condition. The patch is included in Linux kernel stable updates; users should apply the latest updates from their distribution to mitigate the vulnerability [1].
AI Insight generated on May 19, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected products
2Patches
0No patches discovered yet.
Vulnerability mechanics
AI mechanics synthesis has not run for this CVE yet.
References
2News mentions
0No linked articles in our index yet.