<?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>Sun, 04 Oct 2026 18:27:45 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-43338 — btrfs: reserve enough transaction items for qgroup ioctls</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-43338</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: reserve enough transaction items for qgroup ioctls&lt;/p&gt;
&lt;p&gt;Currently our qgroup ioctls don&amp;#39;t reserve any space, they just do a
transaction join, which does not reserve any space, neither for the quota
tree updates nor for the delayed refs generated when updating the quota
tree. The quota root uses the global block reserve, which is fine most of
the time since we don&amp;#39;t expect a lot of updates to the quota root, or to
be too close to -ENOSPC such that other critical metadata updates need to
resort to the global reserve.&lt;/p&gt;
&lt;p&gt;However this is not optimal, as not reserving proper space may result in a
transaction abort due to not reserving space for delayed refs and then
abusing the use of the global block reserve.&lt;/p&gt;
&lt;p&gt;For example, the following reproducer (which is unlikely to model any
real world use case, but just to illustrate the problem), triggers such a
transaction abort due to -ENOSPC when running delayed refs:&lt;/p&gt;
&lt;p&gt;$ cat test.sh
  #!/bin/bash&lt;/p&gt;
&lt;p&gt;DEV=/dev/nullb0
  MNT=/mnt/nullb0&lt;/p&gt;
&lt;p&gt;umount $DEV &amp;amp;&amp;gt; /dev/null
  # Limit device to 1G so that it&amp;#39;s much faster to reproduce the issue.
  mkfs.btrfs -f -b 1G $DEV
  mount -o commit=600 $DEV $MNT&lt;/p&gt;
&lt;p&gt;fallocate -l 800M $MNT/filler
  btrfs quota enable $MNT&lt;/p&gt;
&lt;p&gt;for ((i = 1; i &amp;lt;= 400000; i++)); do
      btrfs qgroup create 1/$i $MNT
  done&lt;/p&gt;
&lt;p&gt;umount $MNT&lt;/p&gt;
&lt;p&gt;When running this, we can see in dmesg/syslog that a transaction abort
happened:&lt;/p&gt;
&lt;p&gt;[436.490] BTRFS error (device nullb0): fa…&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: reserve enough transaction items for qgroup ioctls&lt;/p&gt;
&lt;p&gt;Currently our qgroup ioctls don&amp;#39;t reserve any space, they just do a
transaction join, which does not reserve any space, neither for the quota
tree updates nor for the delayed refs generated when updating the quota
tree. The quota root uses the global block reserve, which is fine most of
the time since we don&amp;#39;t expect a lot of updates to the quota root, or to
be too close to -ENOSPC such that other critical metadata updates need to
resort to the global reserve.&lt;/p&gt;
&lt;p&gt;However this is not optimal, as not reserving proper space may result in a
transaction abort due to not reserving space for delayed refs and then
abusing the use of the global block reserve.&lt;/p&gt;
&lt;p&gt;For example, the following reproducer (which is unlikely to model any
real world use case, but just to illustrate the problem), triggers such a
transaction abort due to -ENOSPC when running delayed refs:&lt;/p&gt;
&lt;p&gt;$ cat test.sh
  #!/bin/bash&lt;/p&gt;
&lt;p&gt;DEV=/dev/nullb0
  MNT=/mnt/nullb0&lt;/p&gt;
&lt;p&gt;umount $DEV &amp;amp;&amp;gt; /dev/null
  # Limit device to 1G so that it&amp;#39;s much faster to reproduce the issue.
  mkfs.btrfs -f -b 1G $DEV
  mount -o commit=600 $DEV $MNT&lt;/p&gt;
&lt;p&gt;fallocate -l 800M $MNT/filler
  btrfs quota enable $MNT&lt;/p&gt;
&lt;p&gt;for ((i = 1; i &amp;lt;= 400000; i++)); do
      btrfs qgroup create 1/$i $MNT
  done&lt;/p&gt;
&lt;p&gt;umount $MNT&lt;/p&gt;
&lt;p&gt;When running this, we can see in dmesg/syslog that a transaction abort
happened:&lt;/p&gt;
&lt;p&gt;[436.490] BTRFS error (device nullb0): fa…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-43338</guid>
    </item>
  </channel>
</rss>
