<?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>Mon, 28 Sep 2026 23:34:09 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-23465 — btrfs: log new dentries when logging parent dir of a conflicting inode</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-23465</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: log new dentries when logging parent dir of a conflicting inode&lt;/p&gt;
&lt;p&gt;If we log the parent directory of a conflicting inode, we are not logging
the new dentries of the directory, so when we finish we have the parent
directory&amp;#39;s inode marked as logged but we did not log its new dentries.
As a consequence if the parent directory is explicitly fsynced later and
it does not have any new changes since we logged it, the fsync is a no-op
and after a power failure the new dentries are missing.&lt;/p&gt;
&lt;p&gt;Example scenario:&lt;/p&gt;
&lt;p&gt;$ mkdir foo&lt;/p&gt;
&lt;p&gt;$ sync&lt;/p&gt;
&lt;p&gt;$rmdir foo&lt;/p&gt;
&lt;p&gt;$ mkdir dir1
  $ mkdir dir2&lt;/p&gt;
&lt;p&gt;# A file with the same name and parent as the directory we just deleted
  # and was persisted in a past transaction. So the deleted directory&amp;#39;s
  # inode is a conflicting inode of this new file&amp;#39;s inode.
  $ touch foo&lt;/p&gt;
&lt;p&gt;$ ln foo dir2/link&lt;/p&gt;
&lt;p&gt;# The fsync on dir2 will log the parent directory (&amp;#34;.&amp;#34;) because the
  # conflicting inode (deleted directory) does not exists anymore, but it
  # it does not log its new dentries (dir1).
  $ xfs_io -c &amp;#34;fsync&amp;#34; dir2&lt;/p&gt;
&lt;p&gt;# This fsync on the parent directory is no-op, since the previous fsync
  # logged it (but without logging its new dentries).
  $ xfs_io -c &amp;#34;fsync&amp;#34; .&lt;/p&gt;
&lt;p&gt;&amp;lt;power failure&amp;gt;&lt;/p&gt;
&lt;p&gt;# After log replay dir1 is missing.&lt;/p&gt;
&lt;p&gt;Fix this by ensuring we log new dir dentries whenever we log the parent
directory of a no longer existing conflicting inode.&lt;/p&gt;
&lt;p&gt;A test case for fstests will follow soon.&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: log new dentries when logging parent dir of a conflicting inode&lt;/p&gt;
&lt;p&gt;If we log the parent directory of a conflicting inode, we are not logging
the new dentries of the directory, so when we finish we have the parent
directory&amp;#39;s inode marked as logged but we did not log its new dentries.
As a consequence if the parent directory is explicitly fsynced later and
it does not have any new changes since we logged it, the fsync is a no-op
and after a power failure the new dentries are missing.&lt;/p&gt;
&lt;p&gt;Example scenario:&lt;/p&gt;
&lt;p&gt;$ mkdir foo&lt;/p&gt;
&lt;p&gt;$ sync&lt;/p&gt;
&lt;p&gt;$rmdir foo&lt;/p&gt;
&lt;p&gt;$ mkdir dir1
  $ mkdir dir2&lt;/p&gt;
&lt;p&gt;# A file with the same name and parent as the directory we just deleted
  # and was persisted in a past transaction. So the deleted directory&amp;#39;s
  # inode is a conflicting inode of this new file&amp;#39;s inode.
  $ touch foo&lt;/p&gt;
&lt;p&gt;$ ln foo dir2/link&lt;/p&gt;
&lt;p&gt;# The fsync on dir2 will log the parent directory (&amp;#34;.&amp;#34;) because the
  # conflicting inode (deleted directory) does not exists anymore, but it
  # it does not log its new dentries (dir1).
  $ xfs_io -c &amp;#34;fsync&amp;#34; dir2&lt;/p&gt;
&lt;p&gt;# This fsync on the parent directory is no-op, since the previous fsync
  # logged it (but without logging its new dentries).
  $ xfs_io -c &amp;#34;fsync&amp;#34; .&lt;/p&gt;
&lt;p&gt;&amp;lt;power failure&amp;gt;&lt;/p&gt;
&lt;p&gt;# After log replay dir1 is missing.&lt;/p&gt;
&lt;p&gt;Fix this by ensuring we log new dir dentries whenever we log the parent
directory of a no longer existing conflicting inode.&lt;/p&gt;
&lt;p&gt;A test case for fstests will follow soon.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-23465</guid>
    </item>
  </channel>
</rss>
