<?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 22:57:02 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-23249 — xfs: check for deleted cursors when revalidating two btrees</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-23249</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;xfs: check for deleted cursors when revalidating two btrees&lt;/p&gt;
&lt;p&gt;The free space and inode btree repair functions will rebuild both btrees
at the same time, after which it needs to evaluate both btrees to
confirm that the corruptions are gone.&lt;/p&gt;
&lt;p&gt;However, Jiaming Zhang ran syzbot and produced a crash in the second
xchk_allocbt call.  His root-cause analysis is as follows (with minor
corrections):&lt;/p&gt;
&lt;p&gt;In xrep_revalidate_allocbt(), xchk_allocbt() is called twice (first
 for BNOBT, second for CNTBT). The cause of this issue is that the
 first call nullified the cursor required by the second call.&lt;/p&gt;
&lt;p&gt;Let&amp;#39;s first enter xrep_revalidate_allocbt() via following call chain:&lt;/p&gt;
&lt;p&gt;xfs_file_ioctl() -&amp;gt;
 xfs_ioc_scrubv_metadata() -&amp;gt;
 xfs_scrub_metadata() -&amp;gt;
 `sc-&amp;gt;ops-&amp;gt;repair_eval(sc)` -&amp;gt;
 xrep_revalidate_allocbt()&lt;/p&gt;
&lt;p&gt;xchk_allocbt() is called twice in this function. In the first call:&lt;/p&gt;
&lt;p&gt;/* Note that sc-&amp;gt;sm-&amp;gt;sm_type is XFS_SCRUB_TYPE_BNOPT now */
 xchk_allocbt() -&amp;gt;
 xchk_btree() -&amp;gt;
 `bs-&amp;gt;scrub_rec(bs, recp)` -&amp;gt;
 xchk_allocbt_rec() -&amp;gt;
 xchk_allocbt_xref() -&amp;gt;
 xchk_allocbt_xref_other()&lt;/p&gt;
&lt;p&gt;since sm_type is XFS_SCRUB_TYPE_BNOBT, pur is set to &amp;amp;sc-&amp;gt;sa.cnt_cur.
 Kernel called xfs_alloc_get_rec() and returned -EFSCORRUPTED. Call
 chain:&lt;/p&gt;
&lt;p&gt;xfs_alloc_get_rec() -&amp;gt;
 xfs_btree_get_rec() -&amp;gt;
 xfs_btree_check_block() -&amp;gt;
 (XFS_IS_CORRUPT || XFS_TEST_ERROR), the former is false and the latter
 is true, return -EFSCORRUPTED. This should be caused by
 ioct…&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;xfs: check for deleted cursors when revalidating two btrees&lt;/p&gt;
&lt;p&gt;The free space and inode btree repair functions will rebuild both btrees
at the same time, after which it needs to evaluate both btrees to
confirm that the corruptions are gone.&lt;/p&gt;
&lt;p&gt;However, Jiaming Zhang ran syzbot and produced a crash in the second
xchk_allocbt call.  His root-cause analysis is as follows (with minor
corrections):&lt;/p&gt;
&lt;p&gt;In xrep_revalidate_allocbt(), xchk_allocbt() is called twice (first
 for BNOBT, second for CNTBT). The cause of this issue is that the
 first call nullified the cursor required by the second call.&lt;/p&gt;
&lt;p&gt;Let&amp;#39;s first enter xrep_revalidate_allocbt() via following call chain:&lt;/p&gt;
&lt;p&gt;xfs_file_ioctl() -&amp;gt;
 xfs_ioc_scrubv_metadata() -&amp;gt;
 xfs_scrub_metadata() -&amp;gt;
 `sc-&amp;gt;ops-&amp;gt;repair_eval(sc)` -&amp;gt;
 xrep_revalidate_allocbt()&lt;/p&gt;
&lt;p&gt;xchk_allocbt() is called twice in this function. In the first call:&lt;/p&gt;
&lt;p&gt;/* Note that sc-&amp;gt;sm-&amp;gt;sm_type is XFS_SCRUB_TYPE_BNOPT now */
 xchk_allocbt() -&amp;gt;
 xchk_btree() -&amp;gt;
 `bs-&amp;gt;scrub_rec(bs, recp)` -&amp;gt;
 xchk_allocbt_rec() -&amp;gt;
 xchk_allocbt_xref() -&amp;gt;
 xchk_allocbt_xref_other()&lt;/p&gt;
&lt;p&gt;since sm_type is XFS_SCRUB_TYPE_BNOBT, pur is set to &amp;amp;sc-&amp;gt;sa.cnt_cur.
 Kernel called xfs_alloc_get_rec() and returned -EFSCORRUPTED. Call
 chain:&lt;/p&gt;
&lt;p&gt;xfs_alloc_get_rec() -&amp;gt;
 xfs_btree_get_rec() -&amp;gt;
 xfs_btree_check_block() -&amp;gt;
 (XFS_IS_CORRUPT || XFS_TEST_ERROR), the former is false and the latter
 is true, return -EFSCORRUPTED. This should be caused by
 ioct…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-23249</guid>
    </item>
  </channel>
</rss>
