CVE-2026-53284: Linux Kernel Btrfs Write Error Handling Vulnerability
CVE-2026-53284 is a Linux kernel vulnerability in the Btrfs filesystem driver that affects how dirty page writes are managed during filesystem transactions. When a write operation fails, the kernel incorrectly clears its internal tracking of pending disk writes without properly handling those unsaved changes. This leads to memory and state management issues that can cause the filesystem to crash or become read-only during shutdown. The vulnerability requires no special privileges or user interaction to trigger—a combination of filesystem stress and an I/O error can initiate it.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 7.5 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Weaknesses (CWE)
- CWE-476
- Affected products
- 4 configuration(s)
- Published / Modified
- 2026-06-26 / 2026-07-08
NVD description (verbatim)
In the Linux kernel, the following vulnerability has been resolved: btrfs: only release the dirty pages io tree after successful writes [WARNING] With extra warning on dirty extent buffers at umount (aka, the next patch in the series), test case generic/388 can trigger the following warning about dirty extent buffers at unmount time: BTRFS critical (device dm-2 state E): emergency shutdown BTRFS error (device dm-2 state E): error while writing out transaction: -30 BTRFS warning (device dm-2 state E): Skipping commit of aborted transaction. BTRFS error (device dm-2 state EA): Transaction 9 aborted (error -30) BTRFS: error (device dm-2 state EA) in cleanup_transaction:2068: errno=-30 Readonly filesystem BTRFS info (device dm-2 state EA): forced readonly BTRFS info (device dm-2 state EA): last unmount of filesystem 4fbf2e15-f941-49a0-bc7c-716315d2777c ------------[ cut here ]------------ WARNING: disk-io.c:3311 at invalidate_and_check_btree_folios+0xfd/0x1ca [btrfs], CPU#8: umount/914368 CPU: 8 UID: 0 PID: 914368 Comm: umount Tainted: G OE 7.1.0-rc1-custom+ #372 PREEMPT(full) 2de38db8d1deae71fde295430a0ff3ab98ccf596 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS unknown 02/02/2022 RIP: 0010:invalidate_and_check_btree_folios+0xfd/0x1ca [btrfs] Call Trace: <TASK> close_ctree+0x52e/0x574 [btrfs d2f0b1cd330d1287e7a9919d112eadfc0e914efd] generic_shutdown_super+0x89/0x1a0 kill_anon_super+0x16/0x40 btrfs_kill_super+0x16/0x20 [btrfs d2f0b1cd330d1287e7a9919d112eadfc0e914efd] deactivate_locked_super+0x2d/0xb0 cleanup_mnt+0xdc/0x140 task_work_run+0x5a/0xa0 exit_to_user_mode_loop+0x123/0x4b0 do_syscall_64+0x243/0x7c0 entry_SYSCALL_64_after_hwframe+0x4b/0x53 </TASK> ---[ end trace 0000000000000000 ]--- BTRFS warning (device dm-2 state EA): unable to release extent buffer 30539776 owner 9 gen 9 refs 2 flags 0x7 BTRFS warning (device dm-2 state EA): unable to release extent buffer 30621696 owner 257 gen 9 refs 2 flags 0x7 BTRFS warning (device dm-2 state EA): unable to release extent buffer 30638080 owner 258 gen 9 refs 2 flags 0x7 BTRFS warning (device dm-2 state EA): unable to release extent buffer 30654464 owner 7 gen 9 refs 2 flags 0x7 BTRFS warning (device dm-2 state EA): unable to release extent buffer 30703616 owner 2 gen 9 refs 2 flags 0x7 BTRFS warning (device dm-2 state EA): unable to release extent buffer 30720000 owner 10 gen 9 refs 2 flags 0x7 BTRFS warning (device dm-2 state EA): unable to release extent buffer 30736384 owner 4 gen 9 refs 2 flags 0x7 BTRFS warning (device dm-2 state EA): unable to release extent buffer 30752768 owner 11 gen 9 refs 2 flags 0x7 I'm using a stripped down version, which seems to trigger the warning more reliably: _fsstress_pid="" workload() { dmesg -C mkfs.btrfs -f -K $dev > /dev/null echo 1 > /sys/kernel/debug/clear_warn_once mount $dev $mnt $fsstress -w -n 1024 -p 4 -d $mnt & _fsstress_pid=$! sleep 0 $godown $mnt pkill --echo -PIPE fsstress > /dev/null wait $_fsstress_pid unset _fsstress_pid umount $mnt if dmesg | grep -q "WARNING"; then fail fi } for (( i = 0; i < $runtime; i++ )); do echo "=== $i/$runtime ===" workload done [CAUSE] Inside btrfs_write_and_wait_transaction(), we first try to write all dirty ebs, then wait for them to finish. After that we call btrfs_extent_io_tree_release() to free all extent states from dirty_pages io tree. However if we hit an error from btrfs_write_marked_extent(), then we still call btrfs_extent_io_tree_release() to clear that dirty_pages io tree, which may contain dirty records that we haven't yet submitted. Furthermore, the later transaction cleanup path will utilize that dirty_pages io tree to properly cleanup those dirty ebs, but since it's already empty, no dirty ebs are properly cleaned up, thus will later trigger the warnings inside invalidate_btree_folios(). ---truncated---
3 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability exists in the btrfs_write_and_wait_transaction() function within the Linux kernel's Btrfs implementation. The bug involves premature cleanup of the dirty_pages extent I/O tree. When btrfs_write_marked_extent() encounters an error, the code still proceeds to call btrfs_extent_io_tree_release(), which clears extent state records that represent dirty extent buffers not yet written to disk. This premature cleanup leaves the transaction's dirty extent buffers in an inconsistent state. During filesystem unmount or transaction cleanup, the transaction path cannot locate these dirty buffers (since they were already cleared from the tracking tree), resulting in them remaining marked dirty in memory but untracked. This causes invalidate_btree_folios() to warn about unreleased extent buffers and can trigger emergency filesystem shutdown with BTRFS critical and error messages.
Business impact
Systems running affected Linux kernel versions hosting Btrfs filesystems face unexpected filesystem unavailability. When this bug is triggered—typically under I/O load combined with write failures—the filesystem can be forced read-only or unmounted unexpectedly, disrupting services that depend on data availability. Data itself is not at immediate risk of corruption or exposure, but operational continuity is compromised. For enterprises relying on Btrfs for container storage, virtual machine images, or large-scale data systems, unplanned read-only transitions create service interruptions and require manual intervention to recover.
Affected systems
The Linux kernel across multiple stable and development versions is affected. Systems explicitly using Btrfs as their filesystem (rather than ext4, XFS, or others) are at risk. This includes container platforms, virtualization hosts, and data centers that have selected Btrfs for its advanced features such as copy-on-write snapshots and compression. The vulnerability is present in kernel versions prior to the fix; verify the exact affected range against the Linux kernel security advisory and your distribution's patching timeline.
Exploitability
This vulnerability does not require special privileges, network access, or user interaction beyond normal filesystem operations. Any process with write access to a Btrfs filesystem can trigger the condition through sustained I/O stress combined with write errors (which may occur naturally due to hardware issues, controller failures, or resource exhaustion). No exploit code or sophistication is necessary; the bug manifests under realistic failure scenarios. However, it is not remotely exploitable and requires local filesystem access, which somewhat limits attack surface in restricted environments.
Remediation
Update the Linux kernel to a version containing the fix for CVE-2026-53284. The fix modifies btrfs_write_and_wait_transaction() to only call btrfs_extent_io_tree_release() after successful completion of btrfs_write_marked_extent(). If a write error occurs, the dirty_pages tree is left intact so that subsequent transaction cleanup can properly handle the outstanding dirty extent buffers. Verify the exact patched kernel version against your distribution's security advisories. Testing in a non-production environment before deployment is recommended, particularly for systems with complex Btrfs configurations or snapshotting.
Patch guidance
Obtain the latest kernel version from your Linux distribution's security updates or from kernel.org. The fix involves a conditional check: only release the dirty_pages extent I/O tree if the write operation succeeds. Distributions should backport this fix to all maintained kernel branches. After patching, a full kernel reboot is required to activate the updated code. For systems unable to reboot immediately, document the risk and schedule maintenance windows accordingly. Test the patched kernel with your typical workload before deploying to production, particularly if you use Btrfs snapshots or high-concurrency write patterns.
Detection guidance
Monitor kernel logs for BTRFS warnings such as 'unable to release extent buffer' or 'emergency shutdown' messages, which indicate this bug may have been triggered. Watch for unexpected filesystem state transitions to read-only mode or unplanned unmounts. If you are running Btrfs, verify your current kernel version against your distribution's patched version. You can check the running kernel with `uname -r` and compare it to the vendor's security advisory. Additionally, monitor I/O error rates and write-failure patterns on the underlying storage layer, as these conditions are necessary (though not sufficient) to trigger the vulnerability.
Why prioritize this
This vulnerability scores 7.5 (HIGH) due to its high availability impact and ease of local triggering. While it requires local filesystem access and does not enable privilege escalation or data theft, it directly threatens system stability and availability—critical factors for production infrastructure. Organizations running Btrfs should treat this as a near-term priority, particularly if their systems experience any storage I/O issues or operate under high write load. Systems using alternative filesystems (ext4, XFS, etc.) are not affected and do not require immediate action on this specific CVE.
Risk score, explained
The CVSS 3.1 score of 7.5 reflects a HIGH severity rating with the vector AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H. The network-accessible attack vector (AV:N) is somewhat misleading for this kernel-level bug; in practice, local filesystem access is required. The high availability impact (A:H) is the primary driver, reflecting the filesystem's potential transition to read-only or unavailability. Low attack complexity (AC:L) and no privilege or user interaction requirement (PR:N/UI:N) indicate that the condition can manifest under realistic stress scenarios without special exploitation techniques.
Frequently asked questions
Is my data at risk of loss or corruption if this vulnerability is exploited?
Not directly. CVE-2026-53284 causes filesystem unavailability and can force a transition to read-only mode, but it does not enable unauthorized data access or intentional data modification. However, forced read-only transitions may prevent legitimate write operations, and unexpected unmounts could lead to incomplete transactions. Ensure you have reliable backups regardless of patch status.
Do I need to patch if I use ext4 or XFS instead of Btrfs?
No. This vulnerability is specific to the Btrfs filesystem driver in the Linux kernel. Systems using ext4, XFS, or other filesystems are not affected by this CVE and do not require a patch for this particular issue.
Can this vulnerability be exploited remotely over the network?
Not in the traditional sense. The vulnerability resides in the Linux kernel's filesystem layer and requires local write access to a Btrfs filesystem to trigger. Remote attackers cannot invoke this bug directly; however, if a compromised service with local disk access is exposed, an attacker could potentially trigger it as part of a wider attack to cause denial of service.
What is the minimum disruption approach to patching?
Plan a maintenance window for a kernel reboot, which is necessary to activate the patched code. Before rebooting production systems, test the patched kernel in a staging environment if possible. For systems where downtime is critical, consider scheduling the reboot during low-traffic periods or using live kernel patching (livepatch) if available from your distribution, though this CVE may require a full reboot depending on your kernel version and distribution support.
This analysis is based on publicly available information current as of the published date. Patch versions, affected kernel ranges, and vendor advisories should be verified against official Linux distribution security notices and kernel.org before deployment. SEC.co does not provide exploit code or weaponized proof-of-concepts. The CVSS score and severity rating provided reflect the official CVE record; organizations should assess risk within their own infrastructure and threat model. This vulnerability requires local filesystem access and is most relevant to systems actively using Btrfs; ext4, XFS, and other filesystem users are not affected. Source: NVD (public-domain), retrieved 2026-08-05. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-46110HIGHLinux stmmac NULL Dereference DoS Vulnerability
- CVE-2026-46114HIGHLinux Kernel RDMA RXE Remote Memory Leak via Malformed ATOMIC_WRITE
- CVE-2026-52922HIGHLinux batman-adv NULL Pointer Dereference DoS
- CVE-2026-52929HIGHLinux SCTP Null-Pointer Dereference in Stream Rollback
- CVE-2026-52951HIGHLinux Xe DRM DMA-buf Race Condition – Local DoS via GPU Memory Import
- CVE-2026-52957HIGHLinux Kernel Ceph Null Pointer Dereference Denial of Service
- CVE-2026-52998HIGHLinux Kernel Netfilter NULL Pointer Dereference – Denial of Service
- CVE-2026-53069HIGHLinux Kernel XDP Null Pointer Dereference in Bond Redirect