<?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, 29 Sep 2026 21:26:40 +0000</lastBuildDate>
    <item>
      <title>CVE-2023-53489 — tcp/udp: Fix memleaks of sk and zerocopy skbs with TX timestamp.</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2023-53489</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;tcp/udp: Fix memleaks of sk and zerocopy skbs with TX timestamp.&lt;/p&gt;
&lt;p&gt;syzkaller reported [0] memory leaks of an UDP socket and ZEROCOPY
skbs.  We can reproduce the problem with these sequences:&lt;/p&gt;
&lt;p&gt;sk = socket(AF_INET, SOCK_DGRAM, 0)
  sk.setsockopt(SOL_SOCKET, SO_TIMESTAMPING, SOF_TIMESTAMPING_TX_SOFTWARE)
  sk.setsockopt(SOL_SOCKET, SO_ZEROCOPY, 1)
  sk.sendto(b&amp;#39;&amp;#39;, MSG_ZEROCOPY, (&amp;#39;127.0.0.1&amp;#39;, 53))
  sk.close()&lt;/p&gt;
&lt;p&gt;sendmsg() calls msg_zerocopy_alloc(), which allocates a skb, sets
skb-&amp;gt;cb-&amp;gt;ubuf.refcnt to 1, and calls sock_hold().  Here, struct
ubuf_info_msgzc indirectly holds a refcnt of the socket.  When the
skb is sent, __skb_tstamp_tx() clones it and puts the clone into
the socket&amp;#39;s error queue with the TX timestamp.&lt;/p&gt;
&lt;p&gt;When the original skb is received locally, skb_copy_ubufs() calls
skb_unclone(), and pskb_expand_head() increments skb-&amp;gt;cb-&amp;gt;ubuf.refcnt.
This additional count is decremented while freeing the skb, but struct
ubuf_info_msgzc still has a refcnt, so __msg_zerocopy_callback() is
not called.&lt;/p&gt;
&lt;p&gt;The last refcnt is not released unless we retrieve the TX timestamped
skb by recvmsg().  Since we clear the error queue in inet_sock_destruct()
after the socket&amp;#39;s refcnt reaches 0, there is a circular dependency.
If we close() the socket holding such skbs, we never call sock_put()
and leak the count, sk, and skb.&lt;/p&gt;
&lt;p&gt;TCP has the same problem, and commit e0c8bccd40fc (&amp;#34;net: stream:
purge sk_error_queue in sk_stream_kil…&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;tcp/udp: Fix memleaks of sk and zerocopy skbs with TX timestamp.&lt;/p&gt;
&lt;p&gt;syzkaller reported [0] memory leaks of an UDP socket and ZEROCOPY
skbs.  We can reproduce the problem with these sequences:&lt;/p&gt;
&lt;p&gt;sk = socket(AF_INET, SOCK_DGRAM, 0)
  sk.setsockopt(SOL_SOCKET, SO_TIMESTAMPING, SOF_TIMESTAMPING_TX_SOFTWARE)
  sk.setsockopt(SOL_SOCKET, SO_ZEROCOPY, 1)
  sk.sendto(b&amp;#39;&amp;#39;, MSG_ZEROCOPY, (&amp;#39;127.0.0.1&amp;#39;, 53))
  sk.close()&lt;/p&gt;
&lt;p&gt;sendmsg() calls msg_zerocopy_alloc(), which allocates a skb, sets
skb-&amp;gt;cb-&amp;gt;ubuf.refcnt to 1, and calls sock_hold().  Here, struct
ubuf_info_msgzc indirectly holds a refcnt of the socket.  When the
skb is sent, __skb_tstamp_tx() clones it and puts the clone into
the socket&amp;#39;s error queue with the TX timestamp.&lt;/p&gt;
&lt;p&gt;When the original skb is received locally, skb_copy_ubufs() calls
skb_unclone(), and pskb_expand_head() increments skb-&amp;gt;cb-&amp;gt;ubuf.refcnt.
This additional count is decremented while freeing the skb, but struct
ubuf_info_msgzc still has a refcnt, so __msg_zerocopy_callback() is
not called.&lt;/p&gt;
&lt;p&gt;The last refcnt is not released unless we retrieve the TX timestamped
skb by recvmsg().  Since we clear the error queue in inet_sock_destruct()
after the socket&amp;#39;s refcnt reaches 0, there is a circular dependency.
If we close() the socket holding such skbs, we never call sock_put()
and leak the count, sk, and skb.&lt;/p&gt;
&lt;p&gt;TCP has the same problem, and commit e0c8bccd40fc (&amp;#34;net: stream:
purge sk_error_queue in sk_stream_kil…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2023-53489</guid>
    </item>
  </channel>
</rss>
