<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Wed, 30 Sep 2026 03:39:26 +0000</lastBuildDate>
    <item>
      <title>CVE-2025-68169 — netpoll: Fix deadlock in memory allocation under spinlock</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2025-68169</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;netpoll: Fix deadlock in memory allocation under spinlock&lt;/p&gt;
&lt;p&gt;Fix a AA deadlock in refill_skbs() where memory allocation while holding
skb_pool-&amp;gt;lock can trigger a recursive lock acquisition attempt.&lt;/p&gt;
&lt;p&gt;The deadlock scenario occurs when the system is under severe memory
pressure:&lt;/p&gt;
&lt;p&gt;1. refill_skbs() acquires skb_pool-&amp;gt;lock (spinlock)
2. alloc_skb() is called while holding the lock
3. Memory allocator fails and calls slab_out_of_memory()
4. This triggers printk() for the OOM warning
5. The console output path calls netpoll_send_udp()
6. netpoll_send_udp() attempts to acquire the same skb_pool-&amp;gt;lock
7. Deadlock: the lock is already held by the same CPU&lt;/p&gt;
&lt;p&gt;Call stack:
  refill_skbs()
    spin_lock_irqsave(&amp;amp;skb_pool-&amp;gt;lock)    &amp;lt;- 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(&amp;amp;skb_pool-&amp;gt;lock)     &amp;lt;- deadlock attempt&lt;/p&gt;
&lt;p&gt;This bug was exposed by commit 248f6571fd4c51 (&amp;#34;netpoll: Optimize skb
refilling on critical path&amp;#34;) which removed refill_skbs() from the
critical path (where nested printk was being deferred), letting nested
printk being called from inside refill_skbs()&lt;/p&gt;
&lt;p&gt;Refactor refill_skbs() to never allocate memory while holding
the spinlock.&lt;/p&gt;
&lt;p&gt;Another possible solution to fix this problem is protecting the
refill_skbs() from…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;netpoll: Fix deadlock in memory allocation under spinlock&lt;/p&gt;
&lt;p&gt;Fix a AA deadlock in refill_skbs() where memory allocation while holding
skb_pool-&amp;gt;lock can trigger a recursive lock acquisition attempt.&lt;/p&gt;
&lt;p&gt;The deadlock scenario occurs when the system is under severe memory
pressure:&lt;/p&gt;
&lt;p&gt;1. refill_skbs() acquires skb_pool-&amp;gt;lock (spinlock)
2. alloc_skb() is called while holding the lock
3. Memory allocator fails and calls slab_out_of_memory()
4. This triggers printk() for the OOM warning
5. The console output path calls netpoll_send_udp()
6. netpoll_send_udp() attempts to acquire the same skb_pool-&amp;gt;lock
7. Deadlock: the lock is already held by the same CPU&lt;/p&gt;
&lt;p&gt;Call stack:
  refill_skbs()
    spin_lock_irqsave(&amp;amp;skb_pool-&amp;gt;lock)    &amp;lt;- 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(&amp;amp;skb_pool-&amp;gt;lock)     &amp;lt;- deadlock attempt&lt;/p&gt;
&lt;p&gt;This bug was exposed by commit 248f6571fd4c51 (&amp;#34;netpoll: Optimize skb
refilling on critical path&amp;#34;) which removed refill_skbs() from the
critical path (where nested printk was being deferred), letting nested
printk being called from inside refill_skbs()&lt;/p&gt;
&lt;p&gt;Refactor refill_skbs() to never allocate memory while holding
the spinlock.&lt;/p&gt;
&lt;p&gt;Another possible solution to fix this problem is protecting the
refill_skbs() from…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2025-68169</guid>
    </item>
  </channel>
</rss>
