Vulnerability · Published Feb 27, 2025 · Assigned by Linux

CVE-2025-21754btrfs: fix assertion failure when splitting ordered extent after transaction abort

Medium 5.5

In plain English

A medium-severity security flaw in Linux from Linux. There are no confirmed reports of exploitation so far. The chance it is exploited in the next 30 days is estimated at 0.2% (higher than 14% of all known vulnerabilities). Fixed versions are available - upgrade the affected package.

Severity (CVSS NVD)5.5Medium
Exploit odds (30 days)0.2%top 85.7% of all CVEs
Exploited in the wildNo reportsnot in CISA KEV
Attack toolingNoneno public tooling known

Official description

In the Linux kernel, the following vulnerability has been resolved: btrfs: fix assertion failure when splitting ordered extent after transaction abort If while we are doing a direct IO write a transaction abort happens, we mark all existing ordered extents with the BTRFS_ORDERED_IOERR flag (done at btrfs_destroy_ordered_extents()), and then after that if we enter btrfs_split_ordered_extent() and the ordered extent has bytes left (meaning we have a bio that doesn't cover the whole ordered extent, see details at btrfs_extract_ordered_extent()), we will fail on the following assertion at btrfs_split_ordered_extent(): ASSERT(!(flags & ~BTRFS_ORDERED_TYPE_FLAGS)); because the BTRFS_ORDERED_IOERR flag is set and the definition of BTRFS_ORDERED_TYPE_FLAGS is just the union of all flags that identify the type of write (regular, nocow, prealloc, compressed, direct IO, encoded). Fix this by returning an error from btrfs_extract_ordered_extent() if we find the BTRFS_ORDERED_IOERR flag in the ordered extent. The error will be the error that resulted in the transaction abort or -EIO if no transaction abort happened. This was recently reported by syzbot with the following trace: FAULT_INJECTION: forcing a failure. name failslab, interval 1, probability 0, space 0, times 1 CPU: 0 UID: 0 PID: 5321 Comm: syz.0.0 Not tainted 6.13.0-rc5-syzkaller #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014 Call Trace: <TASK> __dump_stack lib/dump_stack.c:94 [inline] dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120 fail_dump lib/fault-inject.c:53 [inline] should_fail_ex+0x3b0/0x4e0 lib/fault-inject.c:154 should_failslab+0xac/0x100 mm/failslab.c:46 slab_pre_alloc_hook mm/slub.c:4072 [inline] slab_alloc_node mm/slub.c:4148 [inline] __do_kmalloc_node mm/slub.c:4297 [inline] __kmalloc_noprof+0xdd/0x4c0 mm/slub.c:4310 kmalloc_noprof include/linux/slab.h:905 [inline] kzalloc_noprof include/linux/slab.h:1037 [inline] btrfs_chunk_alloc_add_chunk_item+0x244/0x1100 fs/btrfs/volumes.c:5742 reserve_chunk_space+0x1ca/0x2c0 fs/btrfs/block-group.c:4292 check_system_chunk fs/btrfs/block-group.c:4319 [inline] do_chunk_alloc fs/btrfs/block-group.c:3891 [inline] btrfs_chunk_alloc+0x77b/0xf80 fs/btrfs/block-group.c:4187 find_free_extent_update_loop fs/btrfs/extent-tree.c:4166 [inline] find_free_extent+0x42d1/0x5810 fs/btrfs/extent-tree.c:4579 btrfs_reserve_extent+0x422/0x810 fs/btrfs/extent-tree.c:4672 btrfs_new_extent_direct fs/btrfs/direct-io.c:186 [inline] btrfs_get_blocks_direct_write+0x706/0xfa0 fs/btrfs/direct-io.c:321 btrfs_dio_iomap_begin+0xbb7/0x1180 fs/btrfs/direct-io.c:525 iomap_iter+0x697/0xf60 fs/iomap/iter.c:90 __iomap_dio_rw+0xeb9/0x25b0 fs/iomap/direct-io.c:702 btrfs_dio_write fs/btrfs/direct-io.c:775 [inline] btrfs_direct_write+0x610/0xa30 fs/btrfs/direct-io.c:880 btrfs_do_write_iter+0x2a0/0x760 fs/btrfs/file.c:1397 do_iter_readv_writev+0x600/0x880 vfs_writev+0x376/0xba0 fs/read_write.c:1050 do_pwritev fs/read_write.c:1146 [inline] __do_sys_pwritev2 fs/read_write.c:1204 [inline] __se_sys_pwritev2+0x196/0x2b0 fs/read_write.c:1195 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f1281f85d29 RSP: 002b:00007f12819fe038 EFLAGS: 00000246 ORIG_RAX: 0000000000000148 RAX: ffffffffffffffda RBX: 00007f1282176080 RCX: 00007f1281f85d29 RDX: 0000000000000001 RSI: 0000000020000240 RDI: 0000000000000005 RBP: 00007f12819fe090 R08: 0000000000000000 R09: 0000000000000003 R10: 0000000000007000 R11: 0000000000000246 R12: 0000000000000002 R13: 0000000000000000 R14: 00007f1282176080 R15: 00007ffcb9e23328 </TASK> BTRFS error (device loop0 state A): Transaction aborted (error -12) BTRFS: error (device loop0 state A ---truncated---

Affected packages & fixed versions

EcosystemPackageFixed inAdvisory
Debian:13linux6.12.15-1DEBIAN-CVE-2025-21754
Debian:14linux6.12.15-1DEBIAN-CVE-2025-21754
Ubuntu:24.04:LTSlinux6.8.0-64.67UBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-allwinner-5.19no fix listedUBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-aws6.8.0-1032.34UBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-aws-5.19no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-aws-6.2no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-aws-6.5no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-aws-6.86.8.0-1032.34~22.04.1UBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-azure6.8.0-1034.39UBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-azure-5.19no fix listedUBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-azure-6.116.11.0-1015.15~24.04.1UBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-azure-6.2no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-azure-6.5no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-azure-6.86.8.0-1034.39~22.04.1UBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-azure-fde-5.19no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-azure-fde-6.2no fix listedUBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-azure-nvidia6.8.0-1022.23UBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-gcp6.8.0-1033.35UBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-gcp-5.19no fix listedUBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-gcp-6.116.11.0-1015.15~24.04.1UBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-gcp-6.2no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-gcp-6.5no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-gcp-6.86.8.0-1033.35~22.04.1UBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-gke6.8.0-1028.32UBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-gkeop6.8.0-1015.17UBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-hwe-5.19no fix listedUBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-hwe-6.116.11.0-26.26~24.04.1UBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-hwe-6.2no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-hwe-6.5no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-hwe-6.86.8.0-64.67~22.04.1UBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-ibm6.8.0-1029.29UBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-ibm-6.86.8.0-1029.29~22.04.1UBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-intel-iot-realtimeno fix listedUBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-lowlatency6.8.0-64.67.1UBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-lowlatency-hwe-5.19no fix listedUBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-lowlatency-hwe-6.116.11.0-1014.15~24.04.1UBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.2no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.5no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.86.8.0-64.67.1~22.04.1UBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-nvidia6.8.0-1031.34UBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-nvidia-6.116.11.0-1010.10UBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-nvidia-6.2no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-nvidia-6.5no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-nvidia-6.86.8.0-1031.34~22.04.1UBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-nvidia-lowlatency6.8.0-1031.34.1UBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-nvidia-tegra6.8.0-1008.8UBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-oem-5.17no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-oem-6.0no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-oem-6.1no fix listedUBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-oem-6.116.11.0-1022.22UBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-oem-6.5no fix listedUBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-oem-6.86.8.0-1031.31UBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-oracle6.8.0-1029.30UBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-oracle-6.5no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-oracle-6.86.8.0-1029.30~22.04.1UBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-raspi6.8.0-1031.35UBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-raspi-realtimeno fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-realtimeno fix listedUBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-realtimeno fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-riscvno fix listedUBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-riscvno fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-riscv-5.19no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-riscv-6.5no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-riscv-6.86.8.0-64.67~22.04.1UBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-starfive-5.19no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-starfive-6.2no fix listedUBUNTU-CVE-2025-21754
Ubuntu:22.04:LTSlinux-starfive-6.5no fix listedUBUNTU-CVE-2025-21754
Ubuntu:24.04:LTSlinux-xilinx6.8.0-1017.18UBUNTU-CVE-2025-21754

Affected products (as reported)

VendorProductVersions
Linux Linux 52b1fdca23ac0fbcad363a1a5b426bf0d56b715a – before 927b930f117bbae730a853c1dc43da8afe8380fa52b1fdca23ac0fbcad363a1a5b426bf0d56b715a – before 0ff88c2a742a7cbaa4d08507d864737d099b435a52b1fdca23ac0fbcad363a1a5b426bf0d56b715a – before 8ea8db4216d1029527ab4666f730650419451e3252b1fdca23ac0fbcad363a1a5b426bf0d56b715a – before 0d85f5c2dd91df6b5da454406756f463ba923b69
Linux Linux 6.5

References