<?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>Sun, 04 Oct 2026 01:53:46 +0000</lastBuildDate>
    <item>
      <title>CVE-2023-53645 — bpf: Make bpf_refcount_acquire fallible for non-owning refs</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2023-53645</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;bpf: Make bpf_refcount_acquire fallible for non-owning refs&lt;/p&gt;
&lt;p&gt;This patch fixes an incorrect assumption made in the original
bpf_refcount series [0], specifically that the BPF program calling
bpf_refcount_acquire on some node can always guarantee that the node is
alive. In that series, the patch adding failure behavior to rbtree_add
and list_push_{front, back} breaks this assumption for non-owning
references.&lt;/p&gt;
&lt;p&gt;Consider the following program:&lt;/p&gt;
&lt;p&gt;n = bpf_kptr_xchg(&amp;amp;mapval, NULL);
  /* skip error checking */&lt;/p&gt;
&lt;p&gt;bpf_spin_lock(&amp;amp;l);
  if(bpf_rbtree_add(&amp;amp;t, &amp;amp;n-&amp;gt;rb, less)) {
    bpf_refcount_acquire(n);
    /* Failed to add, do something else with the node */
  }
  bpf_spin_unlock(&amp;amp;l);&lt;/p&gt;
&lt;p&gt;It&amp;#39;s incorrect to assume that bpf_refcount_acquire will always succeed in this
scenario. bpf_refcount_acquire is being called in a critical section
here, but the lock being held is associated with rbtree t, which isn&amp;#39;t
necessarily the lock associated with the tree that the node is already
in. So after bpf_rbtree_add fails to add the node and calls bpf_obj_drop
in it, the program has no ownership of the node&amp;#39;s lifetime. Therefore
the node&amp;#39;s refcount can be decr&amp;#39;d to 0 at any time after the failing
rbtree_add. If this happens before the refcount_acquire above, the node
might be free&amp;#39;d, and regardless refcount_acquire will be incrementing a
0 refcount.&lt;/p&gt;
&lt;p&gt;Later patches in the series exercise this scenario, resulting in the
expected complai…&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;bpf: Make bpf_refcount_acquire fallible for non-owning refs&lt;/p&gt;
&lt;p&gt;This patch fixes an incorrect assumption made in the original
bpf_refcount series [0], specifically that the BPF program calling
bpf_refcount_acquire on some node can always guarantee that the node is
alive. In that series, the patch adding failure behavior to rbtree_add
and list_push_{front, back} breaks this assumption for non-owning
references.&lt;/p&gt;
&lt;p&gt;Consider the following program:&lt;/p&gt;
&lt;p&gt;n = bpf_kptr_xchg(&amp;amp;mapval, NULL);
  /* skip error checking */&lt;/p&gt;
&lt;p&gt;bpf_spin_lock(&amp;amp;l);
  if(bpf_rbtree_add(&amp;amp;t, &amp;amp;n-&amp;gt;rb, less)) {
    bpf_refcount_acquire(n);
    /* Failed to add, do something else with the node */
  }
  bpf_spin_unlock(&amp;amp;l);&lt;/p&gt;
&lt;p&gt;It&amp;#39;s incorrect to assume that bpf_refcount_acquire will always succeed in this
scenario. bpf_refcount_acquire is being called in a critical section
here, but the lock being held is associated with rbtree t, which isn&amp;#39;t
necessarily the lock associated with the tree that the node is already
in. So after bpf_rbtree_add fails to add the node and calls bpf_obj_drop
in it, the program has no ownership of the node&amp;#39;s lifetime. Therefore
the node&amp;#39;s refcount can be decr&amp;#39;d to 0 at any time after the failing
rbtree_add. If this happens before the refcount_acquire above, the node
might be free&amp;#39;d, and regardless refcount_acquire will be incrementing a
0 refcount.&lt;/p&gt;
&lt;p&gt;Later patches in the series exercise this scenario, resulting in the
expected complai…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2023-53645</guid>
    </item>
  </channel>
</rss>
