CVE-2026-46251
Btrfs filesystem corruption due to dirty_list handling flaw
Publication date: 2026-06-03
Last updated on: 2026-06-03
Assigner: kernel.org
Description
Description
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| linux | kernel | 6.18.0 |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-UNKNOWN |
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?
This vulnerability exists in the Linux kernel's btrfs filesystem. When the EXTENT_TREE_V2 incompatibility flag is set, the block group tree is incorrectly added to a list called switch_commits before a function called switch_commit_roots is called. The block group tree uses a different method for tracking changes (normal root dirty tracking), so adding it unconditionally corrupts the linked list structure that tracks dirty block groups.
This corruption leads to invalid pointers in the list, which can cause errors during list operations, such as list deletion. When debugging is enabled, this manifests as list_del corruption warnings and kernel warnings.
Eventually, this list corruption can cause the system to mix up internal lists and attempt to update a tree root that does not exist, resulting in a transaction abort in the btrfs filesystem.
How can this vulnerability impact me? :
This vulnerability can cause corruption of internal data structures in the btrfs filesystem, leading to kernel warnings and errors.
The corruption can cause transactions in the filesystem to abort unexpectedly, which may result in failed writes or data operations.
In practical terms, this could lead to instability of the filesystem, potential data loss, or system crashes when using btrfs with the affected kernel versions and configurations.
How can this vulnerability be detected on my network or system? Can you suggest some commands?
This vulnerability manifests as corruption in the block_group_tree dirty_list in the Linux kernel's btrfs filesystem when the EXTENT_TREE_V2 incompat flag is set. Detection can be done by monitoring kernel logs for specific error messages related to list corruption and transaction aborts.
- Look for kernel log messages indicating list_del corruption, such as: "list_del corruption. next->prev should be..., but was..."
- Check for BTRFS critical errors in kernel logs, for example: "BTRFS critical (device ...): unable to find root key (1 0 0) in tree 1" and "BTRFS: Transaction aborted (error -117)".
- Enable CONFIG_DEBUG_LIST in the kernel configuration to get detailed list corruption warnings.
- Use the command `dmesg | grep -i 'list_del corruption'` to search for list corruption errors in kernel logs.
- Use `dmesg | grep -i btrfs` to find BTRFS related critical errors.
What immediate steps should I take to mitigate this vulnerability?
To mitigate this vulnerability, the primary step is to update the Linux kernel to a version where this btrfs block_group_tree dirty_list corruption issue has been fixed.
Since the issue occurs when the EXTENT_TREE_V2 incompat flag is set and involves corruption during transactions, avoiding workloads that trigger heavy btrfs block group allocations or transactions until patched may reduce risk.
Enabling kernel debugging options like CONFIG_DEBUG_LIST can help detect corruption early but does not mitigate the vulnerability itself.
Regularly monitor kernel logs for signs of corruption or transaction aborts to respond quickly.