<?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 23:23:43 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-22979 — net: fix memory leak in skb_segment_list for GRO packets</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-22979</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux, Siemens SIMATIC S7-1500 CPU 1518-4 PN/DP MFP, Siemens SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP, Siemens SIPLUS S7-1500 CPU 1518-4 PN/DP MFP&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;net: fix memory leak in skb_segment_list for GRO packets&lt;/p&gt;
&lt;p&gt;When skb_segment_list() is called during packet forwarding, it handles
packets that were aggregated by the GRO engine.&lt;/p&gt;
&lt;p&gt;Historically, the segmentation logic in skb_segment_list assumes that
individual segments are split from a parent SKB and may need to carry
their own socket memory accounting. Accordingly, the code transfers
truesize from the parent to the newly created segments.&lt;/p&gt;
&lt;p&gt;Prior to commit ed4cccef64c1 (&amp;#34;gro: fix ownership transfer&amp;#34;), this
truesize subtraction in skb_segment_list() was valid because fragments
still carry a reference to the original socket.&lt;/p&gt;
&lt;p&gt;However, commit ed4cccef64c1 (&amp;#34;gro: fix ownership transfer&amp;#34;) changed
this behavior by ensuring that fraglist entries are explicitly
orphaned (skb-&amp;gt;sk = NULL) to prevent illegal orphaning later in the
stack. This change meant that the entire socket memory charge remained
with the head SKB, but the corresponding accounting logic in
skb_segment_list() was never updated.&lt;/p&gt;
&lt;p&gt;As a result, the current code unconditionally adds each fragment&amp;#39;s
truesize to delta_truesize and subtracts it from the parent SKB. Since
the fragments are no longer charged to the socket, this subtraction
results in an effective under-count of memory when the head is freed.
This causes sk_wmem_alloc to remain non-zero, preventing socket
destruction and leading to a persistent memory leak.&lt;/p&gt;
&lt;p&gt;The leak can be observed via KMEMLE…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux, Siemens SIMATIC S7-1500 CPU 1518-4 PN/DP MFP, Siemens SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP, Siemens SIPLUS S7-1500 CPU 1518-4 PN/DP MFP&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;net: fix memory leak in skb_segment_list for GRO packets&lt;/p&gt;
&lt;p&gt;When skb_segment_list() is called during packet forwarding, it handles
packets that were aggregated by the GRO engine.&lt;/p&gt;
&lt;p&gt;Historically, the segmentation logic in skb_segment_list assumes that
individual segments are split from a parent SKB and may need to carry
their own socket memory accounting. Accordingly, the code transfers
truesize from the parent to the newly created segments.&lt;/p&gt;
&lt;p&gt;Prior to commit ed4cccef64c1 (&amp;#34;gro: fix ownership transfer&amp;#34;), this
truesize subtraction in skb_segment_list() was valid because fragments
still carry a reference to the original socket.&lt;/p&gt;
&lt;p&gt;However, commit ed4cccef64c1 (&amp;#34;gro: fix ownership transfer&amp;#34;) changed
this behavior by ensuring that fraglist entries are explicitly
orphaned (skb-&amp;gt;sk = NULL) to prevent illegal orphaning later in the
stack. This change meant that the entire socket memory charge remained
with the head SKB, but the corresponding accounting logic in
skb_segment_list() was never updated.&lt;/p&gt;
&lt;p&gt;As a result, the current code unconditionally adds each fragment&amp;#39;s
truesize to delta_truesize and subtracts it from the parent SKB. Since
the fragments are no longer charged to the socket, this subtraction
results in an effective under-count of memory when the head is freed.
This causes sk_wmem_alloc to remain non-zero, preventing socket
destruction and leading to a persistent memory leak.&lt;/p&gt;
&lt;p&gt;The leak can be observed via KMEMLE…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-22979</guid>
    </item>
  </channel>
</rss>
