Read the docs
TI-2024-23814 Aliases CVE-2024-35956GHSA-3xrx-73h3-j99c

btrfs: qgroup: fix qgroup prealloc rsv leak in subvolume operations

Priority LOW 24CWE-401Published · Updated

Key facts

Attack vector
Local
Privileges required
Low
User interaction
None
Attack complexity
Low
Impact type
Denial of service
Confidentiality · integrity · availability
None · None · High
Fix status
Partial Red Hat: 2 without a fix

Attack profile from CVSS 3.1 · NVD. Fix status from CNA and Red Hat. Impact type from CWE-401.

Summary

In the Linux kernel, the following vulnerability has been resolved: btrfs: qgroup: fix qgroup prealloc rsv leak in subvolume operations Create subvolume, create snapshot and delete subvolume all use btrfs_subvolume_reserve_metadata() to reserve metadata for the changes done to the parent subvolume's fs tree, which cannot be mediated in the normal way via start_transaction. When quota groups (squota or qgroups) are enabled, this reserves qgroup metadata of type PREALLOC. Once the operation is associated to a transaction, we convert PREALLOC to PERTRANS, which gets cleared in bulk at the end of the transaction. However, the error paths of these three operations were not implementing this lifecycle correctly. They unconditionally converted the PREALLOC to PERTRANS in a generic cleanup step regardless of errors or whether the operation was fully associated to a transaction or not. This resulted in error paths occasionally converting this rsv to PERTRANS without calling record_root_in_trans successfully, which meant that unless that root got recorded in the transaction by some other thread, the end of the transaction would not free that root's PERTRANS, leaking it. Ultimately, this resulted in hitting a WARN in CONFIG_BTRFS_DEBUG builds at unmount for the leaked reservation. The fix is to ensure that every qgroup PREALLOC reservation observes the following properties: 1. any failure before record_root_in_trans is called successfully results in freeing the PREALLOC reservation. 2. after record_root_in_trans, we convert to PERTRANS, and now the transaction owns freeing the reservation. This patch enforces those properties on the three operations. Without it, generic/269 with squotas enabled at mkfs time would fail in ~5-10 runs on my system. With this patch, it ran successfully 1000 times in a row.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00229 13th percentileScored 2026-11-07
Fix Partial Linux (Linux): 5.10, 6.1.120, 6.6.28 +2Red Hat: 2 without a fix

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
LinuxLinux5.9.5 to before 5.105.10Patch availableCNA
LinuxLinux5.10 and later6.1.120, 6.6.28, 6.8.7, 6.9Patch availableCNA
  • Linux VendorLinux Affected 5.9.5 to before 5.10 Fixed in 5.10 Patch available CNA
  • Linux VendorLinux Affected 5.10 and later Fixed in 6.1.120, 6.6.28, 6.8.7, 6.9 Patch available CNA

CPE configurations NVD · 4

CPEVersionsRoleVendor
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*5.9.5 to before 6.1.120; 6.2 to before 6.6.28; 6.7 to before 6.8.7VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.9:rc1:*:*:*:*:*:*6.9 rc1VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.9:rc2:*:*:*:*:*:*6.9 rc2VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.9:rc3:*:*:*:*:*:*6.9 rc3VulnerableLinux
  • cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* Versions 5.9.5 to before 6.1.120; 6.2 to before 6.6.28; 6.7 to before 6.8.7 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.9:rc1:*:*:*:*:*:* Versions 6.9 rc1 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.9:rc2:*:*:*:*:*:* Versions 6.9 rc2 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.9:rc3:*:*:*:*:*:* Versions 6.9 rc3 Vulnerable ·Linux

Remediation

  • Fix · CNA Linux (Linux) Fixed in 5.10
  • Fix · CNA Linux (Linux) Fixed in 6.1.120, 6.6.28, 6.8.7, 6.9

Vendor assessments

Red Hat

Red Hat rating: Low. Red Hat's page for this CVE →

ProductStatusPlan or fix
Red Hat Enterprise Linux 6AffectedNo fix planned: Out of support scope
Red Hat Enterprise Linux 7AffectedNo fix planned: Out of support scope
Not affected: 2 products
  • Red Hat Enterprise Linux 8
  • Red Hat Enterprise Linux 9

Timeline

  1. 2026-10-02 Threatist record created from CVE-2024-35956
  2. 2026-10-03 Alias added: GHSA-3xrx-73h3-j99c

References

  • TI-2025-26358 tls: fix handling of zero-length records on the rx_list KEVCVSS 3.1CRITICAL 9.8
  • TI-2026-38352 netfilter: bridge: make ebt_snat ARP rewrite writable KEVCVSS 3.1HIGH 8.8
  • TI-2013-05264 The (1) get_user and (2) put_user API functions in the Linux kernel before 3.5.5 on the… KEVCVSS 3.1HIGH 8.8
  • TI-2022-00125 Integer overflow in kernel KEVCVSS 3.1HIGH 8.4
  • TI-2013-01864 The perf_swevent_init function in kernel/events/core.c in the Linux kernel before 3.8.9… KEVCVSS 3.1HIGH 8.4
  • TI-2021-05514 Heap Out-Of-Bounds Write in Netfilter IP6T_SO_SET_REPLACE KEVCVSS 3.1HIGH 8.3
See all 15278 →

Sources