CVE-2024-46733 json
btrfs: fix qgroup reserve leaks in cow_file_range
published 2024-09-18 2 y ago modified 2026-06-17 4 mo ago also EUVD-2024-41994
- cvss
- 5.5
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 6%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
btrfs: fix qgroup reserve leaks in cow_file_range
In the buffered write path, the dirty page owns the qgroup reserve until it creates an ordered_extent.
Therefore, any errors that occur before the ordered_extent is created must free that reservation, or else the space is leaked. The fstest generic/475 exercises various IO error paths, and is able to trigger errors in cow_file_range where we fail to get to allocating the ordered extent. Note that because we *do* clear delalloc, we are likely to remove the inode from the delalloc list, so the inodes/pages to not have invalidate/launder called on them in the commit abort path.
This results in failures at the unmount stage of the test that look like:
BTRFS: error (device dm-8 state EA) in cleanup_transaction:2018: errno=-5 IO failure BTRFS: error (device dm-8 state EA) in btrfs_replace_file_extents:2416: errno=-5 IO failure BTRFS warning (device dm-8 state EA): qgroup 0/5 has unreleased space, type 0 rsv 28672 ------------[ cut here ]------------ WARNING: CPU: 3 PID: 22588 at fs/btrfs/disk-io.c:4333 close_ctree+0x222/0x4d0 [btrfs] Modules linked in: btrfs blake2b_generic libcrc32c xor zstd_compress raid6_pq CPU: 3 PID: 22588 Comm: umount Kdump: loaded Tainted: G W 6.10.0-rc7-gab56fde445b8 #21 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Arch Linux 1.16.3-1-1 04/01/2014 RIP: 0010:close_ctree+0x222/0x4d0 [btrfs] RSP: 0018:ffffb4465283be00 EFLAGS: 00010202 RAX: 0000000000000001 RBX: ffffa1a1818e1000 RCX: 0000000000000001 RDX: 0000000000000000 RSI: ffffb4465283bbe0 RDI: ffffa1a19374fcb8 RBP: ffffa1a1818e13c0 R08: 0000000100028b16 R09: 0000000000000000 R10: 0000000000000003 R11: 0000000000000003 R12: ffffa1a18ad7972c R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000 FS: 00007f9168312b80(0000) GS:ffffa1a4afcc0000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f91683c9140 CR3: 000000010acaa000 CR4: 00000000000006f0 Call Trace: <TASK> ? close_ctree+0x222/0x4d0 [btrfs] ? __warn.cold+0x8e/0xea ? close_ctree+0x222/0x4d0 [btrfs] ? report_bug+0xff/0x140 ? handle_bug+0x3b/0x70 ? exc_invalid_op+0x17/0x70 ? asm_exc_invalid_op+0x1a/0x20 ? close_ctree+0x222/0x4d0 [btrfs] generic_shutdown_super+0x70/0x160 kill_anon_super+0x11/0x40 btrfs_kill_super+0x11/0x20 [btrfs] deactivate_locked_super+0x2e/0xa0 cleanup_mnt+0xb5/0x150 task_work_run+0x57/0x80 syscall_exit_to_user_mode+0x121/0x130 do_syscall_64+0xab/0x1a0 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f916847a887 ---[ end trace 0000000000000000 ]--- BTRFS error (device dm-8 state EA): qgroup reserved space leaked
Cases 2 and 3 in the out_reserve path both pertain to this type of leak and must free the reserved qgroup data. Because it is already an error path, I opted not to handle the possible errors in btrfs_free_qgroup_data.
Patch / fix
- Linux Linux 6.1.135, 6.6.88, 6.10.9, 6.11
- linux Debian 12 6.1.135-1
- linux Debian 14, Debian 13 6.10.9-1
debian advisories DEBIAN-CVE-2024-46733
- linux Ubuntu 24.04 LTS 6.8.0-50.51
- linux-aws Ubuntu 24.04 LTS 6.8.0-1020.22
- linux-gcp Ubuntu 24.04 LTS 6.8.0-1019.21
- linux-gke Ubuntu 24.04 LTS 6.8.0-1015.19
- linux-ibm Ubuntu 24.04 LTS 6.8.0-1017.17
- linux-azure Ubuntu 24.04 LTS 6.8.0-1020.23
- linux-gkeop Ubuntu 24.04 LTS 6.8.0-1002.4
- linux-raspi Ubuntu 24.04 LTS 6.8.0-1016.18
ubuntu advisories UBUNTU-CVE-2024-46733
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- kernel-azure SLE Module for Public Cloud 15 SP6, openSUSE Leap 15.6 6.4.0-150600.8.52.1
- kernel-syms-azure SLE Module for Public Cloud 15 SP6, openSUSE Leap 15.6 6.4.0-150600.8.52.1
- kernel-source-azure SLE Module for Public Cloud 15 SP6, openSUSE Leap 15.6 6.4.0-150600.8.52.1
- kernel-azure SLE Module for Public Cloud 15 SP7 6.4.0-150700.20.15.2
- kernel-syms-azure SLE Module for Public Cloud 15 SP7 6.4.0-150700.20.15.1
- kernel-source-azure SLE Module for Public Cloud 15 SP7 6.4.0-150700.20.15.2
- kernel-coco SLE Module for Confidential Computing Technical Preview 15 SP6 6.4.0-15061.32.coco15sp6.1
- kernel-syms-coco SLE Module for Confidential Computing Technical Preview 15 SP6 6.4.0-15061.32.coco15sp6.1
suse advisories SUSE-SU-2025:03634-1SUSE-SU-2025:03633-1SUSE-SU-2025:03602-1SUSE-SU-2025:03382-1SUSE-SU-2025:20739-1SUSE-SU-2025:20756-1
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2024-46733 updated cvss 5.5
kernel: btrfs: fix qgroup reserve leaks in cow_file_range
-
Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 more Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 moreaffected: no fix planned “Out of support scope”
-
Red Hat Enterprise Linux 8 perf, kernel, bpftool, kernel-rt, kernel-core, kernel-tools, +29 more Red Hat Enterprise Linux 9 rv, perf, rtla, kernel, bpftool, libperf, +83 morenot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 2 y ago
Exploit prediction
0.17% chance of exploitation in the next 30 days, higher than 6% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| NVD | 3.1 | 5.5 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
Affected products
- Linux Linux
Classification
- Weakness
-
- CWE-667 Improper Locking
- Technology feeds
References
-
git.kernel.org
/stable/c/159f0f61b283ea71e827dd0c18c5dce197de1fa2
patch
-
git.kernel.org
/stable/c/84464db2ec2a55b9313d5f264da196a37ec80994
patch
-
git.kernel.org
/stable/c/e42ef22bc10f0309c0c65d8d6ca8b4127a674b7f
patch
-
git.kernel.org
/stable/c/30479f31d44d47ed00ae0c7453d9b253537005b2
patch
- lists.debian.org /debian-lts-announce/2025/05/msg00045.html
Sources
- CVE List CVE-2024-46733
- NVD CVE-2024-46733
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.