<?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>Sat, 03 Oct 2026 10:07:21 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-53197 — xfrm: iptfs: fix ABBA deadlock in iptfs_destroy_state()</title>
      <link>https://db.gcve.eu/vuln/cve-2026-53197</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;xfrm: iptfs: fix ABBA deadlock in iptfs_destroy_state()&lt;/p&gt;
&lt;p&gt;iptfs_destroy_state() calls hrtimer_cancel() while holding a spinlock
that the timer callback also acquires, leading to an ABBA deadlock on
SMP systems.&lt;/p&gt;
&lt;p&gt;For the output timer (iptfs_timer):
  - iptfs_destroy_state() holds x-&amp;gt;lock, calls hrtimer_cancel()
  - iptfs_delay_timer() callback takes x-&amp;gt;lock&lt;/p&gt;
&lt;p&gt;For the drop timer (drop_timer):
  - iptfs_destroy_state() holds drop_lock, calls hrtimer_cancel()
  - iptfs_drop_timer() callback takes drop_lock&lt;/p&gt;
&lt;p&gt;Both timers use HRTIMER_MODE_REL_SOFT, so their callbacks run in softirq
context.  When hrtimer_cancel() is called for a soft timer that is
currently executing on another CPU, hrtimer_cancel_wait_running() spins
on softirq_expiry_lock -- the same lock held by the softirq running the
callback.  If the callback is blocked waiting for the spinlock held by
the caller of hrtimer_cancel(), a circular dependency forms:&lt;/p&gt;
&lt;p&gt;CPU 0: holds lock_A -&amp;gt; waits for softirq_expiry_lock
  CPU 1: holds softirq_expiry_lock -&amp;gt; waits for lock_A&lt;/p&gt;
&lt;p&gt;Fix by calling hrtimer_cancel() before acquiring the respective locks.
hrtimer_cancel() is safe to call without holding any lock and will wait
for any in-progress callback to complete.  For the output timer, the
lock is still acquired afterwards to drain the packet queue.  For the
drop timer, the lock/unlock pair is removed entirely since it only
existed to serialize with the timer callback,…&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;xfrm: iptfs: fix ABBA deadlock in iptfs_destroy_state()&lt;/p&gt;
&lt;p&gt;iptfs_destroy_state() calls hrtimer_cancel() while holding a spinlock
that the timer callback also acquires, leading to an ABBA deadlock on
SMP systems.&lt;/p&gt;
&lt;p&gt;For the output timer (iptfs_timer):
  - iptfs_destroy_state() holds x-&amp;gt;lock, calls hrtimer_cancel()
  - iptfs_delay_timer() callback takes x-&amp;gt;lock&lt;/p&gt;
&lt;p&gt;For the drop timer (drop_timer):
  - iptfs_destroy_state() holds drop_lock, calls hrtimer_cancel()
  - iptfs_drop_timer() callback takes drop_lock&lt;/p&gt;
&lt;p&gt;Both timers use HRTIMER_MODE_REL_SOFT, so their callbacks run in softirq
context.  When hrtimer_cancel() is called for a soft timer that is
currently executing on another CPU, hrtimer_cancel_wait_running() spins
on softirq_expiry_lock -- the same lock held by the softirq running the
callback.  If the callback is blocked waiting for the spinlock held by
the caller of hrtimer_cancel(), a circular dependency forms:&lt;/p&gt;
&lt;p&gt;CPU 0: holds lock_A -&amp;gt; waits for softirq_expiry_lock
  CPU 1: holds softirq_expiry_lock -&amp;gt; waits for lock_A&lt;/p&gt;
&lt;p&gt;Fix by calling hrtimer_cancel() before acquiring the respective locks.
hrtimer_cancel() is safe to call without holding any lock and will wait
for any in-progress callback to complete.  For the output timer, the
lock is still acquired afterwards to drain the packet queue.  For the
drop timer, the lock/unlock pair is removed entirely since it only
existed to serialize with the timer callback,…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/cve-2026-53197</guid>
    </item>
  </channel>
</rss>
