<?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 02:49:32 +0000</lastBuildDate>
    <item>
      <title>CVE-2025-71183 — btrfs: always detect conflicting inodes when logging inode refs</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2025-71183</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;btrfs: always detect conflicting inodes when logging inode refs&lt;/p&gt;
&lt;p&gt;After rename exchanging (either with the rename exchange operation or
regular renames in multiple non-atomic steps) two inodes and at least
one of them is a directory, we can end up with a log tree that contains
only of the inodes and after a power failure that can result in an attempt
to delete the other inode when it should not because it was not deleted
before the power failure. In some case that delete attempt fails when
the target inode is a directory that contains a subvolume inside it, since
the log replay code is not prepared to deal with directory entries that
point to root items (only inode items).&lt;/p&gt;
&lt;p&gt;1) We have directories &amp;#34;dir1&amp;#34; (inode A) and &amp;#34;dir2&amp;#34; (inode B) under the
   same parent directory;&lt;/p&gt;
&lt;p&gt;2) We have a file (inode C) under directory &amp;#34;dir1&amp;#34; (inode A);&lt;/p&gt;
&lt;p&gt;3) We have a subvolume inside directory &amp;#34;dir2&amp;#34; (inode B);&lt;/p&gt;
&lt;p&gt;4) All these inodes were persisted in a past transaction and we are
   currently at transaction N;&lt;/p&gt;
&lt;p&gt;5) We rename the file (inode C), so at btrfs_log_new_name() we update
   inode C&amp;#39;s last_unlink_trans to N;&lt;/p&gt;
&lt;p&gt;6) We get a rename exchange for &amp;#34;dir1&amp;#34; (inode A) and &amp;#34;dir2&amp;#34; (inode B),
   so after the exchange &amp;#34;dir1&amp;#34; is inode B and &amp;#34;dir2&amp;#34; is inode A.
   During the rename exchange we call btrfs_log_new_name() for inodes
   A and B, but because they are directories, we don&amp;#39;t update their
   last_unlink_trans to N;&lt;/p&gt;
&lt;p&gt;7) An fsync again…&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;btrfs: always detect conflicting inodes when logging inode refs&lt;/p&gt;
&lt;p&gt;After rename exchanging (either with the rename exchange operation or
regular renames in multiple non-atomic steps) two inodes and at least
one of them is a directory, we can end up with a log tree that contains
only of the inodes and after a power failure that can result in an attempt
to delete the other inode when it should not because it was not deleted
before the power failure. In some case that delete attempt fails when
the target inode is a directory that contains a subvolume inside it, since
the log replay code is not prepared to deal with directory entries that
point to root items (only inode items).&lt;/p&gt;
&lt;p&gt;1) We have directories &amp;#34;dir1&amp;#34; (inode A) and &amp;#34;dir2&amp;#34; (inode B) under the
   same parent directory;&lt;/p&gt;
&lt;p&gt;2) We have a file (inode C) under directory &amp;#34;dir1&amp;#34; (inode A);&lt;/p&gt;
&lt;p&gt;3) We have a subvolume inside directory &amp;#34;dir2&amp;#34; (inode B);&lt;/p&gt;
&lt;p&gt;4) All these inodes were persisted in a past transaction and we are
   currently at transaction N;&lt;/p&gt;
&lt;p&gt;5) We rename the file (inode C), so at btrfs_log_new_name() we update
   inode C&amp;#39;s last_unlink_trans to N;&lt;/p&gt;
&lt;p&gt;6) We get a rename exchange for &amp;#34;dir1&amp;#34; (inode A) and &amp;#34;dir2&amp;#34; (inode B),
   so after the exchange &amp;#34;dir1&amp;#34; is inode B and &amp;#34;dir2&amp;#34; is inode A.
   During the rename exchange we call btrfs_log_new_name() for inodes
   A and B, but because they are directories, we don&amp;#39;t update their
   last_unlink_trans to N;&lt;/p&gt;
&lt;p&gt;7) An fsync again…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2025-71183</guid>
    </item>
  </channel>
</rss>
