<?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://db.gcve.eu</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>Tue, 03 Nov 2026 15:55:27 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-98818 — mm/slab: do not wake up kswapd in __kfree_rcu_sheaf()</title>
      <link>https://db.gcve.eu/vuln/cve-2026-98818</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;mm/slab: do not wake up kswapd in __kfree_rcu_sheaf()&lt;/p&gt;
&lt;p&gt;Since kfree_rcu() can be called under pi_lock (a raw spinlock in the
scheduler), kfree_rcu() itself should never allocate memory with
__GFP_KSWAPD_RECLAIM as waking up kswapd ends up acquiring pi_lock,
which leads to a deadlock.&lt;/p&gt;
&lt;p&gt;Reproducing the issue even intentionally was not straightforward.
The set_cpus_allowed_force() path that is called under pi_lock is
exercised very rarely, and competing tasks that allocate memory will
most likely wake kswapd up.&lt;/p&gt;
&lt;p&gt;Therefore the existence of the deadlock was verified with a modified
kernel that has a lockdep map for waking up kswapd:&lt;/p&gt;
&lt;p&gt;======================================================
  WARNING: possible circular locking dependency detected
  7.2.0-rc1-slab-for-next+ #10 Not tainted
  ------------------------------------------------------
  git/6660 is trying to acquire lock:
  ffff8e524533c550 (&amp;amp;p-&amp;gt;pi_lock){-.-.}-{2:2}, at: _raw_spin_lock_irqsave+0x12/0x20&lt;/p&gt;
&lt;p&gt;but task is already holding lock:
  ffff8e57bffff1a0 (&amp;amp;pgdat-&amp;gt;kswapd_wait){....}-{3:3}, at: _raw_spin_lock_irqsave+0x12/0x20&lt;/p&gt;
&lt;p&gt;which lock already depends on the new lock.&lt;/p&gt;
&lt;p&gt;the existing dependency chain (in reverse order) is:&lt;/p&gt;
&lt;p&gt;-&amp;gt; #2 (&amp;amp;pgdat-&amp;gt;kswapd_wait){....}-{3:3}:
         __lock_acquire+0x5a4/0xc50
         lock_acquire.part.0+0xb7/0x240
         lock_acquire+0x70/0x170
         __raw_spin_lock_irqsave+0x44/0x80
         _raw_spin_lock_irqsave…&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;mm/slab: do not wake up kswapd in __kfree_rcu_sheaf()&lt;/p&gt;
&lt;p&gt;Since kfree_rcu() can be called under pi_lock (a raw spinlock in the
scheduler), kfree_rcu() itself should never allocate memory with
__GFP_KSWAPD_RECLAIM as waking up kswapd ends up acquiring pi_lock,
which leads to a deadlock.&lt;/p&gt;
&lt;p&gt;Reproducing the issue even intentionally was not straightforward.
The set_cpus_allowed_force() path that is called under pi_lock is
exercised very rarely, and competing tasks that allocate memory will
most likely wake kswapd up.&lt;/p&gt;
&lt;p&gt;Therefore the existence of the deadlock was verified with a modified
kernel that has a lockdep map for waking up kswapd:&lt;/p&gt;
&lt;p&gt;======================================================
  WARNING: possible circular locking dependency detected
  7.2.0-rc1-slab-for-next+ #10 Not tainted
  ------------------------------------------------------
  git/6660 is trying to acquire lock:
  ffff8e524533c550 (&amp;amp;p-&amp;gt;pi_lock){-.-.}-{2:2}, at: _raw_spin_lock_irqsave+0x12/0x20&lt;/p&gt;
&lt;p&gt;but task is already holding lock:
  ffff8e57bffff1a0 (&amp;amp;pgdat-&amp;gt;kswapd_wait){....}-{3:3}, at: _raw_spin_lock_irqsave+0x12/0x20&lt;/p&gt;
&lt;p&gt;which lock already depends on the new lock.&lt;/p&gt;
&lt;p&gt;the existing dependency chain (in reverse order) is:&lt;/p&gt;
&lt;p&gt;-&amp;gt; #2 (&amp;amp;pgdat-&amp;gt;kswapd_wait){....}-{3:3}:
         __lock_acquire+0x5a4/0xc50
         lock_acquire.part.0+0xb7/0x240
         lock_acquire+0x70/0x170
         __raw_spin_lock_irqsave+0x44/0x80
         _raw_spin_lock_irqsave…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/cve-2026-98818</guid>
    </item>
  </channel>
</rss>
