<?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 01:24:19 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-72341 — net/mlx5e: Fix publication race for priv-&gt;channel_stats[]</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-72341</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: Fix publication race for priv-&amp;gt;channel_stats[]&lt;/p&gt;
&lt;p&gt;mlx5e_channel_stats_alloc() publishes a new entry to
priv-&amp;gt;channel_stats[] and then increments priv-&amp;gt;stats_nch as a
publication token, but neither store carries any memory barrier:&lt;/p&gt;
&lt;p&gt;priv-&amp;gt;channel_stats[ix] = kvzalloc_node(...);
	if (!priv-&amp;gt;channel_stats[ix])
		return -ENOMEM;
	priv-&amp;gt;stats_nch++;&lt;/p&gt;
&lt;p&gt;Concurrent readers compute the loop bound from priv-&amp;gt;stats_nch and
then dereference priv-&amp;gt;channel_stats[i] using plain accesses, e.g.&lt;/p&gt;
&lt;p&gt;for (i = 0; i &amp;lt; priv-&amp;gt;stats_nch; i++) {
		struct mlx5e_channel_stats *cs = priv-&amp;gt;channel_stats[i];
		... cs-&amp;gt;rq.packets ...
	}&lt;/p&gt;
&lt;p&gt;On weakly-ordered architectures (ARM, PowerPC, RISC-V) the writes to
channel_stats[ix] and stats_nch may become visible to other CPUs out
of program order. A reader can observe stats_nch == N while still
seeing channel_stats[N-1] == NULL, leading to a NULL pointer
dereference in the channel_stats loop.&lt;/p&gt;
&lt;p&gt;This has been observed in production on BlueField-3 DPUs (arm64),
where ovs-vswitchd queries netdev statistics over netlink during NIC
bringup, racing mlx5e_open_channel() -&amp;gt; mlx5e_channel_stats_alloc()
on another CPU:&lt;/p&gt;
&lt;p&gt;Unable to handle kernel NULL pointer dereference at virtual address 0x840
  Hardware name: BlueField-3 DPU
  pc : mlx5e_fold_sw_stats64+0x30/0x180 [mlx5_core]
  Call trace:
   mlx5e_fold_sw_stats64+0x30/0x180 [mlx5_core]
   dev_get_stats+0x50/0xc0
   ovs_vport_get_stats+0x38/0xac…&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: Fix publication race for priv-&amp;gt;channel_stats[]&lt;/p&gt;
&lt;p&gt;mlx5e_channel_stats_alloc() publishes a new entry to
priv-&amp;gt;channel_stats[] and then increments priv-&amp;gt;stats_nch as a
publication token, but neither store carries any memory barrier:&lt;/p&gt;
&lt;p&gt;priv-&amp;gt;channel_stats[ix] = kvzalloc_node(...);
	if (!priv-&amp;gt;channel_stats[ix])
		return -ENOMEM;
	priv-&amp;gt;stats_nch++;&lt;/p&gt;
&lt;p&gt;Concurrent readers compute the loop bound from priv-&amp;gt;stats_nch and
then dereference priv-&amp;gt;channel_stats[i] using plain accesses, e.g.&lt;/p&gt;
&lt;p&gt;for (i = 0; i &amp;lt; priv-&amp;gt;stats_nch; i++) {
		struct mlx5e_channel_stats *cs = priv-&amp;gt;channel_stats[i];
		... cs-&amp;gt;rq.packets ...
	}&lt;/p&gt;
&lt;p&gt;On weakly-ordered architectures (ARM, PowerPC, RISC-V) the writes to
channel_stats[ix] and stats_nch may become visible to other CPUs out
of program order. A reader can observe stats_nch == N while still
seeing channel_stats[N-1] == NULL, leading to a NULL pointer
dereference in the channel_stats loop.&lt;/p&gt;
&lt;p&gt;This has been observed in production on BlueField-3 DPUs (arm64),
where ovs-vswitchd queries netdev statistics over netlink during NIC
bringup, racing mlx5e_open_channel() -&amp;gt; mlx5e_channel_stats_alloc()
on another CPU:&lt;/p&gt;
&lt;p&gt;Unable to handle kernel NULL pointer dereference at virtual address 0x840
  Hardware name: BlueField-3 DPU
  pc : mlx5e_fold_sw_stats64+0x30/0x180 [mlx5_core]
  Call trace:
   mlx5e_fold_sw_stats64+0x30/0x180 [mlx5_core]
   dev_get_stats+0x50/0xc0
   ovs_vport_get_stats+0x38/0xac…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-72341</guid>
    </item>
  </channel>
</rss>
