<?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>Thu, 01 Oct 2026 12:37:28 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-64210 — net/mlx5e: xsk: Fix unlocked writing to ICOSQ</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-64210</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;net/mlx5e: xsk: Fix unlocked writing to ICOSQ&lt;/p&gt;
&lt;p&gt;During napi poll, when the affinity changes and there&amp;#39;s still XSK work
to be done, we trigger an ICOSQ interrupt on the new CPU. However, this
triggering on the ICOSQ is done unprotected.&lt;/p&gt;
&lt;p&gt;There are 2 such races:&lt;/p&gt;
&lt;p&gt;A) mlx5e_trigger_irq() is called while mlx5e_xsk_alloc_rx_mpwqe() is
running from a different CPU due to affinity change. This can happen
because IRQ triggering is done after napi_complete_done(). At this point
the NAPI can be scheduled on a different CPU. Like this:&lt;/p&gt;
&lt;p&gt;CPU A (old affinity, NAPI tail)    CPU B (new affinity, fresh NAPI)
  -------------------------------    --------------------------------
  napi_complete_done()  clears SCHED
  mlx5e_cq_arm(...)
                                     napi_schedule_prep() sets SCHED
                                     mlx5e_napi_poll()
                                       mlx5e_xsk_alloc_rx_mpwqe()
                                         mlx5e_icosq_sync_lock() // noop
                                         memcpy 640 B UMR body
                                         advance sq-&amp;gt;pc by 10
  mlx5e_trigger_irq(&amp;amp;c-&amp;gt;icosq)
    wqe_info[pi] = {NOP, 1}
    mlx5e_post_nop() advances sq-&amp;gt;pc&lt;/p&gt;
&lt;p&gt;B) mlx5e_trigger_irq() is called on the ICOSQ when
mlx5e_trigger_napi_icosq() is running.&lt;/p&gt;
&lt;p&gt;The obvious fix would be to lock the ICOSQ. But ICOSQ has an optimized
locking scheme that doesn&amp;#39;t work for this scenario. Kick…&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;net/mlx5e: xsk: Fix unlocked writing to ICOSQ&lt;/p&gt;
&lt;p&gt;During napi poll, when the affinity changes and there&amp;#39;s still XSK work
to be done, we trigger an ICOSQ interrupt on the new CPU. However, this
triggering on the ICOSQ is done unprotected.&lt;/p&gt;
&lt;p&gt;There are 2 such races:&lt;/p&gt;
&lt;p&gt;A) mlx5e_trigger_irq() is called while mlx5e_xsk_alloc_rx_mpwqe() is
running from a different CPU due to affinity change. This can happen
because IRQ triggering is done after napi_complete_done(). At this point
the NAPI can be scheduled on a different CPU. Like this:&lt;/p&gt;
&lt;p&gt;CPU A (old affinity, NAPI tail)    CPU B (new affinity, fresh NAPI)
  -------------------------------    --------------------------------
  napi_complete_done()  clears SCHED
  mlx5e_cq_arm(...)
                                     napi_schedule_prep() sets SCHED
                                     mlx5e_napi_poll()
                                       mlx5e_xsk_alloc_rx_mpwqe()
                                         mlx5e_icosq_sync_lock() // noop
                                         memcpy 640 B UMR body
                                         advance sq-&amp;gt;pc by 10
  mlx5e_trigger_irq(&amp;amp;c-&amp;gt;icosq)
    wqe_info[pi] = {NOP, 1}
    mlx5e_post_nop() advances sq-&amp;gt;pc&lt;/p&gt;
&lt;p&gt;B) mlx5e_trigger_irq() is called on the ICOSQ when
mlx5e_trigger_napi_icosq() is running.&lt;/p&gt;
&lt;p&gt;The obvious fix would be to lock the ICOSQ. But ICOSQ has an optimized
locking scheme that doesn&amp;#39;t work for this scenario. Kick…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-64210</guid>
    </item>
  </channel>
</rss>
