Cloudanix VulnDB

CVE-2026-53284

None

CVSS

—

EPSS

0.4%

Published

Jun 26, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A Linux storage bug can cause systems using Btrfs to stop accepting writes and disrupt applications until administrators repair or restart them.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Moderate
Impact
Denial Of Service
Component
OS kernel
Class
Denial of service
Remediation
Patch
Effort
Low
Patch risk
Low

What it actually does

This is a Linux kernel Btrfs filesystem flaw in transaction error handling. When Btrfs attempts to write dirty extent buffers for a transaction and a write submission fails, the vulnerable code can incorrectly release the dirty-pages extent I/O tree even though some dirty records were not successfully submitted. Later transaction cleanup depends on that tree to identify and clean up dirty extent buffers; because the tracking state has already been cleared, dirty metadata buffers can remain unreleased. The observable result is Btrfs transaction aborts, forced read-only filesystem state, kernel warnings during unmount, and potential denial of service for workloads using the affected Btrfs filesystem. The issue is a reliability and availability bug, not an authentication bypass or remote code execution vulnerability based on the available information.

Why it matters to the business

Systems using Btrfs can experience filesystem disruption under error conditions, including aborted transactions, filesystems being forced read-only, failed unmounts, service interruption, and possible need for administrative recovery or reboot. For servers, storage nodes, container hosts, developer workstations, or appliances that rely on Btrfs, this can translate into application downtime, failed writes, interrupted backups, degraded storage operations, and operational recovery effort. The current EPSS is low and it is not listed in CISA KEV, so broad active exploitation is not indicated; however, because it affects kernel filesystem behavior, organizations with Btrfs in production should prioritize normal kernel maintenance and faster remediation for high-availability or write-heavy systems.

How an attack unfolds

An attacker would generally need local access or control over a workload that can create heavy Btrfs filesystem activity and induce or coincide with write errors or transaction-abort conditions. The attacker stresses a Btrfs mount with concurrent metadata-changing operations such as file creation, writes, deletes, syncs, and unmount or shutdown paths. If a dirty extent write fails at the vulnerable point, the kernel may clear internal dirty-page tracking prematurely. Subsequent cleanup cannot correctly find and release the affected dirty extent buffers, leading to Btrfs warnings, aborted transactions, forced read-only remount behavior, and denial of service for applications depending on write access to that filesystem. In most deployments this is a local or workload-triggered availability issue rather than a remotely exploitable vulnerability.

How to fix it

Apply the Linux kernel update from the relevant distribution or kernel vendor that includes the Btrfs fix to only release the dirty-pages I/O tree after successful writes. Because no specific affected package list or fixed version was provided, use vendor advisories for the deployed distribution and kernel branch to identify the corrected kernel build. Reboot into the updated kernel after installation; merely installing the package is not sufficient if the old kernel remains running. Where immediate patching is not possible, reduce exposure by avoiding Btrfs for untrusted write-heavy workloads, restricting local users and containers from mounting filesystems or obtaining CAP_SYS_ADMIN, limiting access to Btrfs-backed writable volumes, ensuring storage health to reduce write errors, and maintaining current backups and recovery procedures for Btrfs filesystems.

How to confirm the fix worked

Confirm the running kernel is the vendor-fixed build using commands such as `uname -a` and the platform package manager, and verify the system was rebooted into that kernel. Confirm Btrfs filesystems are mounted and operating normally with `findmnt -t btrfs`, `btrfs filesystem show`, and `btrfs device stats`. Review `dmesg`, `journalctl -k`, or centralized kernel logs for absence of Btrfs transaction aborts, forced read-only messages, and dirty extent buffer warnings after the update. For non-production validation, reproduce a controlled Btrfs stress workload involving metadata-heavy writes and unmount or shutdown paths and verify that the previous kernel warnings no longer occur. Do not run destructive filesystem stress tests on production volumes.

Typical attack path

  1. Gain local code execution, shell access, container capability, or control over an application workload that can perform intensive I/O on a Btrfs filesystem.
  2. Identify or access a Btrfs-backed mount used for writable storage.
  3. Generate concurrent filesystem stress, especially metadata-heavy operations such as file creation, deletion, truncation, sync, and unmount/remount activity.
  4. Trigger, race with, or wait for write-submission errors or transaction abort conditions on the Btrfs device.
  5. Cause Btrfs transaction cleanup to encounter inconsistent dirty extent buffer tracking.
  6. Observe or benefit from denial-of-service effects such as forced read-only filesystem state, failed writes, kernel warnings, service failures, or administrative recovery requirements.

How to detect it

To assess whether this was already triggered, review local and centralized kernel logs from `dmesg`, `journalctl -k`, syslog, audit pipelines, EDR telemetry, and crash or support bundles for Btrfs transaction failures and unmount-time warnings. Focus on systems with mounted Btrfs filesystems and correlate events with application write failures, filesystem remounts as read-only, storage I/O errors, service restarts, container failures, or host reboots. Key artifacts include kernel messages reporting Btrfs emergency shutdown, aborted transactions, errors while writing out transactions, forced read-only state, warnings in `invalidate_and_check_btree_folios`, and repeated `unable to release extent buffer` messages. Because these indicators can also occur during genuine storage faults or testing, correlate with device health logs, SMART/NVMe errors, hypervisor storage events, and recent local workload activity. There are no known public exploit indicators or named threat actors in the supplied data.

  • BTRFS critical
  • emergency shutdown
  • BTRFS error
  • error while writing out transaction
  • Skipping commit of aborted transaction
  • Transaction aborted
  • cleanup_transaction
  • Readonly filesystem
  • forced readonly
  • last unmount of filesystem
  • WARNING: disk-io.c
  • invalidate_and_check_btree_folios
  • close_ctree
  • btrfs_kill_super
  • unable to release extent buffer
  • dirty extent buffers at unmount
  • btrfs_write_and_wait_transaction
  • btrfs_write_marked_extent

What your security team should do

  • Inventory Linux systems using Btrfs, especially production servers, container hosts, storage nodes, backup targets, and write-heavy workloads.
  • Prioritize kernel updates for systems where Btrfs is used for critical writable data or where local users, containers, or automation can generate high filesystem activity.
  • Reboot systems after patching and verify the running kernel, not just the installed package version.
  • Restrict untrusted users and containers from mounting filesystems or receiving elevated capabilities such as CAP_SYS_ADMIN.
  • Add monitoring for Btrfs transaction aborts, forced read-only remounts, and kernel warnings related to dirty extent buffers.
  • Review recent kernel logs for signs of prior Btrfs emergency shutdown or transaction cleanup failures.
  • Ensure reliable backups and recovery procedures exist for important Btrfs volumes before and after patching.
  • Track distribution-specific advisories because fixed kernel versions vary by vendor and release stream.

The record

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---

Affected packages

Ecosystem Package Introduced Fixed