<?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 05:13:36 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-98592 — net: spacemit: clear TX descriptor on fragment mapping failure</title>
      <link>https://db.gcve.eu/vuln/cve-2026-98592</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: spacemit: clear TX descriptor on fragment mapping failure&lt;/p&gt;
&lt;p&gt;emac_tx_mem_map() writes TX_DESC_0_OWN into the ring descriptor for
every slot beyond old_head as soon as that slot&amp;#39;s memset()&amp;#39;d local
copy is committed with &amp;#34;*tx_desc_addr = tx_desc&amp;#34;, i.e. before the
buffers for that slot have necessarily all been mapped successfully.
If emac_tx_map_frag() then fails on a later fragment, the err_free_skb
path calls emac_free_tx_buf() to unmap and drop the skb, but leaves
the already-written descriptor memory untouched, and tx_ring-&amp;gt;head is
never advanced past old_head (the &amp;#34;tx_ring-&amp;gt;head = head&amp;#34; store is
skipped by the goto).&lt;/p&gt;
&lt;p&gt;So a slot between old_head and the rolled-back head can be left with
TX_DESC_0_OWN set and buffer_addr_{1,2} pointing at DMA mappings that
emac_free_tx_buf() just tore down, while software considers that slot
free again. The next successful emac_tx_mem_map() call only rebuilds
old_head itself; if the DMA engine auto-advances into the following
descriptor once it finishes old_head&amp;#39;s packet, it will fetch that
stale, already-unmapped address.&lt;/p&gt;
&lt;p&gt;emac_tx_clean_desc() already treats emac_free_tx_buf() and clearing
the descriptor as a pair when reclaiming completed descriptors; do
the same in the mapping failure path.&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: spacemit: clear TX descriptor on fragment mapping failure&lt;/p&gt;
&lt;p&gt;emac_tx_mem_map() writes TX_DESC_0_OWN into the ring descriptor for
every slot beyond old_head as soon as that slot&amp;#39;s memset()&amp;#39;d local
copy is committed with &amp;#34;*tx_desc_addr = tx_desc&amp;#34;, i.e. before the
buffers for that slot have necessarily all been mapped successfully.
If emac_tx_map_frag() then fails on a later fragment, the err_free_skb
path calls emac_free_tx_buf() to unmap and drop the skb, but leaves
the already-written descriptor memory untouched, and tx_ring-&amp;gt;head is
never advanced past old_head (the &amp;#34;tx_ring-&amp;gt;head = head&amp;#34; store is
skipped by the goto).&lt;/p&gt;
&lt;p&gt;So a slot between old_head and the rolled-back head can be left with
TX_DESC_0_OWN set and buffer_addr_{1,2} pointing at DMA mappings that
emac_free_tx_buf() just tore down, while software considers that slot
free again. The next successful emac_tx_mem_map() call only rebuilds
old_head itself; if the DMA engine auto-advances into the following
descriptor once it finishes old_head&amp;#39;s packet, it will fetch that
stale, already-unmapped address.&lt;/p&gt;
&lt;p&gt;emac_tx_clean_desc() already treats emac_free_tx_buf() and clearing
the descriptor as a pair when reclaiming completed descriptors; do
the same in the mapping failure path.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/cve-2026-98592</guid>
    </item>
  </channel>
</rss>
