CVE-2022-49075 json
btrfs: fix qgroup reserve overflow the qgroup limit
published 2025-02-26 20 mo ago modified 2026-08-05 3 mo ago also EUVD-2022-55129
- cvss
- 8.1
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.7%
- EPSS 0.7% chance of exploitation in 30 days, percentile 52%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
btrfs: fix qgroup reserve overflow the qgroup limit
We use extent_changeset->bytes_changed in qgroup_reserve_data() to record how many bytes we set for EXTENT_QGROUP_RESERVED state. Currently the bytes_changed is set as "unsigned int", and it will overflow if we try to fallocate a range larger than 4GiB. The result is we reserve less bytes and eventually break the qgroup limit.
Unlike regular buffered/direct write, which we use one changeset for each ordered extent, which can never be larger than 256M. For fallocate, we use one changeset for the whole range, thus it no longer respects the 256M per extent limit, and caused the problem.
The following example test script reproduces the problem:
$ cat qgroup-overflow.sh #!/bin/bash
DEV=/dev/sdj MNT=/mnt/sdj
mkfs.btrfs -f $DEV mount $DEV $MNT
# Set qgroup limit to 2GiB. btrfs quota enable $MNT btrfs qgroup limit 2G $MNT
# Try to fallocate a 3GiB file. This should fail. echo echo "Try to fallocate a 3GiB file..." fallocate -l 3G $MNT/3G.file
# Try to fallocate a 5GiB file. echo echo "Try to fallocate a 5GiB file..." fallocate -l 5G $MNT/5G.file
# See we break the qgroup limit. echo sync btrfs qgroup show -r $MNT
umount $MNT
When running the test:
$ ./qgroup-overflow.sh (...)
Try to fallocate a 3GiB file... fallocate: fallocate failed: Disk quota exceeded
Try to fallocate a 5GiB file...
qgroupid rfer excl max_rfer -------- ---- ---- -------- 0/5 5.00GiB 5.00GiB 2.00GiB
Since we have no control of how bytes_changed is used, it's better to set it to u64.
Patch / fix
- Linux Linux 4.14.276, 4.19.238, 5.4.189, 5.10.111, 5.15.34, 5.16.20, 5.17.3, 5.18
- linux Debian 14, Debian 13, Debian 12 5.17.3-1
debian advisories DEBIAN-CVE-2022-49075
- linux Ubuntu 18.04 LTS 4.15.0-189.200
- linux Ubuntu 20.04 LTS 5.4.0-117.132
- linux Ubuntu 22.04 LTS 5.15.0-37.39
- linux-aws Ubuntu 18.04 LTS 4.15.0-1137.148
- linux-aws Ubuntu 20.04 LTS 5.4.0-1078.84
- linux-aws Ubuntu 22.04 LTS 5.15.0-1011.14
- linux-gcp Ubuntu 20.04 LTS 5.4.0-1078.84
- linux-gcp Ubuntu 22.04 LTS 5.15.0-1008.12
ubuntu advisories UBUNTU-CVE-2022-49075
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-64kb SLES 15 SP5-LTSS, SLE High Performance Computing 15 SP5-LTSS, SLE High Performance Computing 15 SP5-ESPOS 5.14.21-150500.55.100.1
- kernel-syms SLES for SAP 15 SP5, SLES 15 SP5-LTSS, SLE High Performance Computing 15 SP5-LTSS +1 more 5.14.21-150500.55.100.1
- kernel-source SLES for SAP 15 SP5, SLES 15 SP5-LTSS, SLE Micro 5.5 +2 more 5.14.21-150500.55.100.1
- kernel-default SLES for SAP 15 SP5, SLES 15 SP5-LTSS, SLE Micro 5.5 +3 more 5.14.21-150500.55.100.1
- kernel-obs-build SLES for SAP 15 SP5, SLES 15 SP5-LTSS, SLE High Performance Computing 15 SP5-LTSS +1 more 5.14.21-150500.55.100.1
- kernel-default-base SLES for SAP 15 SP5, SLES 15 SP5-LTSS, SLE Micro 5.5 +2 more 5.14.21-150500.55.100.1.150500.6.47.1
- kernel-rt SLE Micro 5.5 5.14.21-150500.13.91.1
- kernel-source-rt SLE Micro 5.5 5.14.21-150500.13.91.1
suse advisories SUSE-SU-2025:1293-1SUSE-SU-2025:1241-1SUSE-SU-2025:1176-1
- git.kernel.org/stable/c/0355387ea5b02d353c9415613fab908fac5c52a6 commit
- git.kernel.org/stable/c/f3d97b22a708bf9e3f3ac2ba232bcefd0b0c136b commit
- git.kernel.org/stable/c/44277c50fdba5019ca25bfad1b71e2561b0de11b commit
- git.kernel.org/stable/c/82ae73ac963cee877ce34f7c31b2b456b516e96c commit
- git.kernel.org/stable/c/4b98799e181b4326a613108cf37acc1f55d21b45 commit
- git.kernel.org/stable/c/6bfff81286d4491f02dad7814bae5c77c9ad2320 commit
- git.kernel.org/stable/c/7941b74ed49b6db25efbef2256ebef843c11a010 commit
- git.kernel.org/stable/c/b642b52d0b50f4d398cb4293f64992d0eed2e2ce commit
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-2022-49075 updated
kernel: btrfs: fix qgroup reserve overflow the qgroup limit
-
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 more 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 more Red Hat Enterprise Linux 10 kernelnot 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
Exploit prediction
0.67% chance of exploitation in the next 30 days, higher than 52% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 8.1 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H |
| 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-190 Integer Overflow or Wraparound
- Technology feeds
References
-
git.kernel.org
/stable/c/0355387ea5b02d353c9415613fab908fac5c52a6
patch
-
git.kernel.org
/stable/c/f3d97b22a708bf9e3f3ac2ba232bcefd0b0c136b
patch
-
git.kernel.org
/stable/c/44277c50fdba5019ca25bfad1b71e2561b0de11b
patch
-
git.kernel.org
/stable/c/82ae73ac963cee877ce34f7c31b2b456b516e96c
patch
-
git.kernel.org
/stable/c/4b98799e181b4326a613108cf37acc1f55d21b45
patch
-
git.kernel.org
/stable/c/6bfff81286d4491f02dad7814bae5c77c9ad2320
patch
-
git.kernel.org
/stable/c/7941b74ed49b6db25efbef2256ebef843c11a010
patch
-
git.kernel.org
/stable/c/b642b52d0b50f4d398cb4293f64992d0eed2e2ce
patch
Sources
- CVE List CVE-2022-49075
- NVD CVE-2022-49075
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.