<?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, 05 Oct 2026 15:26:43 +0000</lastBuildDate>
    <item>
      <title>CVE-2024-35949 — btrfs: make sure that WRITTEN is set on all metadata blocks</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2024-35949</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: make sure that WRITTEN is set on all metadata blocks&lt;/p&gt;
&lt;p&gt;We previously would call btrfs_check_leaf() if we had the check
integrity code enabled, which meant that we could only run the extended
leaf checks if we had WRITTEN set on the header flags.&lt;/p&gt;
&lt;p&gt;This leaves a gap in our checking, because we could end up with
corruption on disk where WRITTEN isn&amp;#39;t set on the leaf, and then the
extended leaf checks don&amp;#39;t get run which we rely on to validate all of
the item pointers to make sure we don&amp;#39;t access memory outside of the
extent buffer.&lt;/p&gt;
&lt;p&gt;However, since 732fab95abe2 (&amp;#34;btrfs: check-integrity: remove
CONFIG_BTRFS_FS_CHECK_INTEGRITY option&amp;#34;) we no longer call
btrfs_check_leaf() from btrfs_mark_buffer_dirty(), which means we only
ever call it on blocks that are being written out, and thus have WRITTEN
set, or that are being read in, which should have WRITTEN set.&lt;/p&gt;
&lt;p&gt;Add checks to make sure we have WRITTEN set appropriately, and then make
sure __btrfs_check_leaf() always does the item checking.  This will
protect us from file systems that have been corrupted and no longer have
WRITTEN set on some of the blocks.&lt;/p&gt;
&lt;p&gt;This was hit on a crafted image tweaking the WRITTEN bit and reported by
KASAN as out-of-bound access in the eb accessors. The example is a dir
item at the end of an eb.&lt;/p&gt;
&lt;p&gt;[2.042] BTRFS warning (device loop1): bad eb member start: ptr 0x3fff start 30572544 member offset 16410 size 2
  [2.040] general protect…&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: make sure that WRITTEN is set on all metadata blocks&lt;/p&gt;
&lt;p&gt;We previously would call btrfs_check_leaf() if we had the check
integrity code enabled, which meant that we could only run the extended
leaf checks if we had WRITTEN set on the header flags.&lt;/p&gt;
&lt;p&gt;This leaves a gap in our checking, because we could end up with
corruption on disk where WRITTEN isn&amp;#39;t set on the leaf, and then the
extended leaf checks don&amp;#39;t get run which we rely on to validate all of
the item pointers to make sure we don&amp;#39;t access memory outside of the
extent buffer.&lt;/p&gt;
&lt;p&gt;However, since 732fab95abe2 (&amp;#34;btrfs: check-integrity: remove
CONFIG_BTRFS_FS_CHECK_INTEGRITY option&amp;#34;) we no longer call
btrfs_check_leaf() from btrfs_mark_buffer_dirty(), which means we only
ever call it on blocks that are being written out, and thus have WRITTEN
set, or that are being read in, which should have WRITTEN set.&lt;/p&gt;
&lt;p&gt;Add checks to make sure we have WRITTEN set appropriately, and then make
sure __btrfs_check_leaf() always does the item checking.  This will
protect us from file systems that have been corrupted and no longer have
WRITTEN set on some of the blocks.&lt;/p&gt;
&lt;p&gt;This was hit on a crafted image tweaking the WRITTEN bit and reported by
KASAN as out-of-bound access in the eb accessors. The example is a dir
item at the end of an eb.&lt;/p&gt;
&lt;p&gt;[2.042] BTRFS warning (device loop1): bad eb member start: ptr 0x3fff start 30572544 member offset 16410 size 2
  [2.040] general protect…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2024-35949</guid>
    </item>
  </channel>
</rss>
