<?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>Tue, 06 Oct 2026 05:06:33 +0000</lastBuildDate>
    <item>
      <title>CVE-2022-49093 — skbuff: fix coalescing for page_pool fragment recycling</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2022-49093</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;skbuff: fix coalescing for page_pool fragment recycling&lt;/p&gt;
&lt;p&gt;Fix a use-after-free when using page_pool with page fragments. We
encountered this problem during normal RX in the hns3 driver:&lt;/p&gt;
&lt;p&gt;(1) Initially we have three descriptors in the RX queue. The first one
    allocates PAGE1 through page_pool, and the other two allocate one
    half of PAGE2 each. Page references look like this:&lt;/p&gt;
&lt;p&gt;RX_BD1 _______ PAGE1
                RX_BD2 _______ PAGE2
                RX_BD3 _________/&lt;/p&gt;
&lt;p&gt;(2) Handle RX on the first descriptor. Allocate SKB1, eventually added
    to the receive queue by tcp_queue_rcv().&lt;/p&gt;
&lt;p&gt;(3) Handle RX on the second descriptor. Allocate SKB2 and pass it to
    netif_receive_skb():&lt;/p&gt;
&lt;p&gt;netif_receive_skb(SKB2)
      ip_rcv(SKB2)
        SKB3 = skb_clone(SKB2)&lt;/p&gt;
&lt;p&gt;SKB2 and SKB3 share a reference to PAGE2 through
    skb_shinfo()-&amp;gt;dataref. The other ref to PAGE2 is still held by
    RX_BD3:&lt;/p&gt;
&lt;p&gt;SKB2 ---+- PAGE2
                      SKB3 __/   /
                RX_BD3 _________/&lt;/p&gt;
&lt;p&gt;(3b) Now while handling TCP, coalesce SKB3 with SKB1:&lt;/p&gt;
&lt;p&gt;tcp_v4_rcv(SKB3)
        tcp_try_coalesce(to=SKB1, from=SKB3)    // succeeds
        kfree_skb_partial(SKB3)
          skb_release_data(SKB3)                // drops one dataref&lt;/p&gt;
&lt;p&gt;SKB1 _____ PAGE1
                           \____
                      SKB2 _____ PAGE2
                                 /
                R…&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;skbuff: fix coalescing for page_pool fragment recycling&lt;/p&gt;
&lt;p&gt;Fix a use-after-free when using page_pool with page fragments. We
encountered this problem during normal RX in the hns3 driver:&lt;/p&gt;
&lt;p&gt;(1) Initially we have three descriptors in the RX queue. The first one
    allocates PAGE1 through page_pool, and the other two allocate one
    half of PAGE2 each. Page references look like this:&lt;/p&gt;
&lt;p&gt;RX_BD1 _______ PAGE1
                RX_BD2 _______ PAGE2
                RX_BD3 _________/&lt;/p&gt;
&lt;p&gt;(2) Handle RX on the first descriptor. Allocate SKB1, eventually added
    to the receive queue by tcp_queue_rcv().&lt;/p&gt;
&lt;p&gt;(3) Handle RX on the second descriptor. Allocate SKB2 and pass it to
    netif_receive_skb():&lt;/p&gt;
&lt;p&gt;netif_receive_skb(SKB2)
      ip_rcv(SKB2)
        SKB3 = skb_clone(SKB2)&lt;/p&gt;
&lt;p&gt;SKB2 and SKB3 share a reference to PAGE2 through
    skb_shinfo()-&amp;gt;dataref. The other ref to PAGE2 is still held by
    RX_BD3:&lt;/p&gt;
&lt;p&gt;SKB2 ---+- PAGE2
                      SKB3 __/   /
                RX_BD3 _________/&lt;/p&gt;
&lt;p&gt;(3b) Now while handling TCP, coalesce SKB3 with SKB1:&lt;/p&gt;
&lt;p&gt;tcp_v4_rcv(SKB3)
        tcp_try_coalesce(to=SKB1, from=SKB3)    // succeeds
        kfree_skb_partial(SKB3)
          skb_release_data(SKB3)                // drops one dataref&lt;/p&gt;
&lt;p&gt;SKB1 _____ PAGE1
                           \____
                      SKB2 _____ PAGE2
                                 /
                R…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2022-49093</guid>
    </item>
  </channel>
</rss>
