<?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-29T06:31:52.068774+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-2024-26792</id>
    <title>CVE-2024-26792 — btrfs: fix double free of anonymous device after snapshot creation failure</title>
    <updated>2026-09-29T06:31:52.080113+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>btrfs: fix double free of anonymous device after snapshot creation failure</p>
<p>When creating a snapshot we may do a double free of an anonymous device
in case there's an error committing the transaction. The second free may
result in freeing an anonymous device number that was allocated by some
other subsystem in the kernel or another btrfs filesystem.</p>
<p>The steps that lead to this:</p>
<p>1) At ioctl.c:create_snapshot() we allocate an anonymous device number
   and assign it to pending_snapshot-&gt;anon_dev;</p>
<p>2) Then we call btrfs_commit_transaction() and end up at
   transaction.c:create_pending_snapshot();</p>
<p>3) There we call btrfs_get_new_fs_root() and pass it the anonymous device
   number stored in pending_snapshot-&gt;anon_dev;</p>
<p>4) btrfs_get_new_fs_root() frees that anonymous device number because
   btrfs_lookup_fs_root() returned a root - someone else did a lookup
   of the new root already, which could some task doing backref walking;</p>
<p>5) After that some error happens in the transaction commit path, and at
   ioctl.c:create_snapshot() we jump to the 'fail' label, and after
   that we free again the same anonymous device number, which in the
   meanwhile may have been reallocated somewhere else, because
   pending_snapshot-&gt;anon_dev still has the same value as in step 1.</p>
<p>Recently syzbot ran into this and reported the following trace:</p>
<p>------------[ cut here ]------------
  ida_free called for id=51 which is not a…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2024-26792"/>
  </entry>
</feed>
