<?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>Mon, 02 Nov 2026 23:09:53 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-98827 — wifi: ath9k_htc: bound TX aggregation to MAX_TX_BUF_SIZE</title>
      <link>https://db.gcve.eu/vuln/cve-2026-98827</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;wifi: ath9k_htc: bound TX aggregation to MAX_TX_BUF_SIZE&lt;/p&gt;
&lt;p&gt;__hif_usb_tx() dequeues up to MAX_TX_AGGR_NUM (20) frames into a
single tx_buf of MAX_TX_BUF_SIZE (32768) bytes, limiting the batch
by record count but never by cumulative byte length.&lt;/p&gt;
&lt;p&gt;With large frames (MTU 2304), 20 aggregated frames of 2292 bytes
each exceed the allocation (20 * 2296 = 45920 bytes), so the
memcpy() in the loop writes up to 13152 bytes past tx_buf-&amp;gt;buf
before usb_submit_urb().&lt;/p&gt;
&lt;p&gt;Peek the queue head and stop before copying any record that would
cross MAX_TX_BUF_SIZE, then dispatch the current batch. Leftover
skbs remain queued and are drained on the next URB completion.&lt;/p&gt;
&lt;p&gt;The byte bound changes the loop&amp;#39;s exit semantics: it can now exit
before i == tx_skb_cnt - 1. Stock only finalized tx_buf-&amp;gt;len on
that last index (len += offset), so an early break would submit a
URB holding only the last record&amp;#39;s length while every dequeued skb
is freed on completion, silently dropping frames. Make tx_buf-&amp;gt;len
a running total and advance tx_buf-&amp;gt;offset per record instead; the
stride round_up(nskb-&amp;gt;len + 4, 4) is identical to the stock stride
when the loop runs to completion.&lt;/p&gt;
&lt;p&gt;Tested on hardware with an MTU 2304 flood: the loop stops at
record 15 (len = 32144, offset = 32144, within 32768), no
oversized URB is submitted, and MTU 1500 pings pass 20/20.&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;wifi: ath9k_htc: bound TX aggregation to MAX_TX_BUF_SIZE&lt;/p&gt;
&lt;p&gt;__hif_usb_tx() dequeues up to MAX_TX_AGGR_NUM (20) frames into a
single tx_buf of MAX_TX_BUF_SIZE (32768) bytes, limiting the batch
by record count but never by cumulative byte length.&lt;/p&gt;
&lt;p&gt;With large frames (MTU 2304), 20 aggregated frames of 2292 bytes
each exceed the allocation (20 * 2296 = 45920 bytes), so the
memcpy() in the loop writes up to 13152 bytes past tx_buf-&amp;gt;buf
before usb_submit_urb().&lt;/p&gt;
&lt;p&gt;Peek the queue head and stop before copying any record that would
cross MAX_TX_BUF_SIZE, then dispatch the current batch. Leftover
skbs remain queued and are drained on the next URB completion.&lt;/p&gt;
&lt;p&gt;The byte bound changes the loop&amp;#39;s exit semantics: it can now exit
before i == tx_skb_cnt - 1. Stock only finalized tx_buf-&amp;gt;len on
that last index (len += offset), so an early break would submit a
URB holding only the last record&amp;#39;s length while every dequeued skb
is freed on completion, silently dropping frames. Make tx_buf-&amp;gt;len
a running total and advance tx_buf-&amp;gt;offset per record instead; the
stride round_up(nskb-&amp;gt;len + 4, 4) is identical to the stock stride
when the loop runs to completion.&lt;/p&gt;
&lt;p&gt;Tested on hardware with an MTU 2304 flood: the loop stops at
record 15 (len = 32144, offset = 32144, within 32768), no
oversized URB is submitted, and MTU 1500 pings pass 20/20.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/cve-2026-98827</guid>
    </item>
  </channel>
</rss>
