<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-09-29T17:13:06.196702+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cve-2026-90109</id>
    <title>CVE-2026-90109 — net: sched: fix 32-bit backlog wrap in gred, bfifo and plug enqueue</title>
    <updated>2026-09-29T17:13:06.428975+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Linux</p>
<p>In the Linux kernel, the following vulnerability has been resolved:</p>
<p>net: sched: fix 32-bit backlog wrap in gred, bfifo and plug enqueue</p>
<p>gred_enqueue(), bfifo_enqueue() and plug_enqueue() admit a packet when the
current backlog plus the packet length fits within the queue limit:</p>
<p>sch-&gt;qstats.backlog + qdisc_pkt_len(skb) &lt;= sch-&gt;limit (gred default VQ)
  gred_backlog+qdisc_pkt_len(skb) &lt;= q-&gt;limit  (gred configured VQ)
  sch-&gt;qstats.backlog + qdisc_pkt_len(skb) &lt;= sch-&gt;limit (bfifo)
  sch-&gt;qstats.backlog + skb-&gt;len &lt;= q-&gt;limit             (plug)</p>
<p>sch-&gt;qstats.backlog and q-&gt;backlog are u32, and qdisc_pkt_len()/skb-&gt;len
are unsigned int, so all sums are computed in 32 bits and wrap at 2^32.
Once the true backlog exceeds 4 GiB the wrapped sum becomes small and
admission keeps succeeding, so the queue grows without bound and the kernel
can be driven to OOM.</p>
<p>Promote the sums to u64 so admission stops once the true backlog exceeds
the limit.  The limit is u32, so the bounded queue stays below 2^32 and
the stored u32 backlog never wraps.</p>
<p>The bug can only be reproduced as root (albeit with ridiculous setup):
 attach a gred (or bfifo/plug) qdisc with a limit near 4 GiB,
 leaving the default VQ unconfigured (for gred), and drive &gt;4 GiB of
 queued traffic (e.g. via a size table / stab to inflate qdisc_pkt_len,
 or sustained high-rate traffic). The u32 backlog+len sum wraps at 2^32,
 admission keeps succeeding, and the queue grows unboundedly to OOM.</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-90109"/>
  </entry>
</feed>
