btrfs: fix hang during unmount when stopping a space reclaim worker
Key facts
- Attack vector
- Local
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- Low
- Impact type
- —
- 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.
Summary
In the Linux kernel, the following vulnerability has been resolved: btrfs: fix hang during unmount when stopping a space reclaim worker Often when running generic/562 from fstests we can hang during unmount, resulting in a trace like this: Sep 07 11:52:00 debian9 unknown: run fstests generic/562 at 2022-09-07 11:52:00 Sep 07 11:55:32 debian9 kernel: INFO: task umount:49438 blocked for more than 120 seconds. Sep 07 11:55:32 debian9 kernel: Not tainted 6.0.0-rc2-btrfs-next-122 #1 Sep 07 11:55:32 debian9 kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. Sep 07 11:55:32 debian9 kernel: task:umount state:D stack: 0 pid:49438 ppid: 25683 flags:0x00004000 Sep 07 11:55:32 debian9 kernel: Call Trace: Sep 07 11:55:32 debian9 kernel: <TASK> Sep 07 11:55:32 debian9 kernel: __schedule+0x3c8/0xec0 Sep 07 11:55:32 debian9 kernel: ? rcu_read_lock_sched_held+0x12/0x70 Sep 07 11:55:32 debian9 kernel: schedule+0x5d/0xf0 Sep 07 11:55:32 debian9 kernel: schedule_timeout+0xf1/0x130 Sep 07 11:55:32 debian9 kernel: ? lock_release+0x224/0x4a0 Sep 07 11:55:32 debian9 kernel: ? lock_acquired+0x1a0/0x420 Sep 07 11:55:32 debian9 kernel: ? trace_hardirqs_on+0x2c/0xd0 Sep 07 11:55:32 debian9 kernel: __wait_for_common+0xac/0x200 Sep 07 11:55:32 debian9 kernel: ? usleep_range_state+0xb0/0xb0 Sep 07 11:55:32 debian9 kernel: __flush_work+0x26d/0x530 Sep 07 11:55:32 debian9 kernel: ? flush_workqueue_prep_pwqs+0x140/0x140 Sep 07 11:55:32 debian9 kernel: ? trace_clock_local+0xc/0x30 Sep 07 11:55:32 debian9 kernel: __cancel_work_timer+0x11f/0x1b0 Sep 07 11:55:32 debian9 kernel: ? close_ctree+0x12b/0x5b3 [btrfs] Sep 07 11:55:32 debian9 kernel: ? __trace_bputs+0x10b/0x170 Sep 07 11:55:32 debian9 kernel: close_ctree+0x152/0x5b3 [btrfs] Sep 07 11:55:32 debian9 kernel: ? evict_inodes+0x166/0x1c0 Sep 07 11:55:32 debian9 kernel: generic_shutdown_super+0x71/0x120 Sep 07 11:55:32 debian9 kernel: kill_anon_super+0x14/0x30 Sep 07 11:55:32 debian9 kernel: btrfs_kill_super+0x12/0x20 [btrfs] Sep 07 11:55:32 debian9 kernel: deactivate_locked_super+0x2e/0xa0 Sep 07 11:55:32 debian9 kernel: cleanup_mnt+0x100/0x160 Sep 07 11:55:32 debian9 kernel: task_work_run+0x59/0xa0 Sep 07 11:55:32 debian9 kernel: exit_to_user_mode_prepare+0x1a6/0x1b0 Sep 07 11:55:32 debian9 kernel: syscall_exit_to_user_mode+0x16/0x40 Sep 07 11:55:32 debian9 kernel: do_syscall_64+0x48/0x90 Sep 07 11:55:32 debian9 kernel: entry_SYSCALL_64_after_hwframe+0x63/0xcd Sep 07 11:55:32 debian9 kernel: RIP: 0033:0x7fcde59a57a7 Sep 07 11:55:32 debian9 kernel: RSP: 002b:00007ffe914217c8 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6 Sep 07 11:55:32 debian9 kernel: RAX: 0000000000000000 RBX: 00007fcde5ae8264 RCX: 00007fcde59a57a7 Sep 07 11:55:32 debian9 kernel: RDX: 0000000000000000 RSI: 0000000000000000 RDI: 000055b57556cdd0 Sep 07 11:55:32 debian9 kernel: RBP: 000055b57556cba0 R08: 0000000000000000 R09: 00007ffe91420570 Sep 07 11:55:32 debian9 kernel: R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 Sep 07 11:55:32 debian9 kernel: R13: 000055b57556cdd0 R14: 000055b57556ccb8 R15: 0000000000000000 Sep 07 11:55:32 debian9 kernel: </TASK> What happens is the following: 1) The cleaner kthread tries to start a transaction to delete an unused block group, but the metadata reservation can not be satisfied right away, so a reservation ticket is created and it starts the async metadata reclaim task (fs_info->async_reclaim_work); 2) Writeback for all the filler inodes with an i_size of 2K starts (generic/562 creates a lot of 2K files with the goal of filling metadata space). We try to create an inline extent for them, but we fail when trying to insert the inline extent with -ENOSPC (at cow_file_range_inline()) - since this is not critical, we fallback to non-inline mode (back to cow_file_range()), reserve extents ---truncated---
Why it matters now
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
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| Linux | Linux | 4.14.120 to before 4.15; 4.19.12 to before 4.20 | 4.15, 4.20 | Patch available | CNA |
| Linux | Linux | 4.20 and later | 5.10.147, 5.15.71, 5.19.12, 6.0 | Patch available | CNA |
- Linux VendorLinux Affected 4.14.120 to before 4.15; 4.19.12 to before 4.20 Fixed in 4.15, 4.20 Patch available CNA
- Linux VendorLinux Affected 4.20 and later Fixed in 5.10.147, 5.15.71, 5.19.12, 6.0 Patch available CNA
CPE configurations NVD · 14
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.14.120 to before 4.15; 4.19.12 to before 4.20; 4.20.1 to before 5.10.147; 5.11 to before 5.15.71; 5.16 to before 5.19.12 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:4.20:-:*:*:*:*:*:* | 4.20 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:4.20:rc2:*:*:*:*:*:* | 4.20 rc2 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:4.20:rc3:*:*:*:*:*:* | 4.20 rc3 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:4.20:rc4:*:*:*:*:*:* | 4.20 rc4 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:4.20:rc5:*:*:*:*:*:* | 4.20 rc5 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:4.20:rc6:*:*:*:*:*:* | 4.20 rc6 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:4.20:rc7:*:*:*:*:*:* | 4.20 rc7 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:6.0:rc1:*:*:*:*:*:* | 6.0 rc1 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:6.0:rc2:*:*:*:*:*:* | 6.0 rc2 | Vulnerable | Linux |
- cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* Versions 4.14.120 to before 4.15; 4.19.12 to before 4.20; 4.20.1 to before 5.10.147; 5.11 to before 5.15.71; 5.16 to before 5.19.12 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:4.20:-:*:*:*:*:*:* Versions 4.20 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:4.20:rc2:*:*:*:*:*:* Versions 4.20 rc2 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:4.20:rc3:*:*:*:*:*:* Versions 4.20 rc3 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:4.20:rc4:*:*:*:*:*:* Versions 4.20 rc4 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:4.20:rc5:*:*:*:*:*:* Versions 4.20 rc5 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:4.20:rc6:*:*:*:*:*:* Versions 4.20 rc6 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:4.20:rc7:*:*:*:*:*:* Versions 4.20 rc7 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:6.0:rc1:*:*:*:*:*:* Versions 6.0 rc1 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:6.0:rc2:*:*:*:*:*:* Versions 6.0 rc2 Vulnerable ·Linux
Show 4 more CPE
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:o:linux:linux_kernel:6.0:rc3:*:*:*:*:*:* | 6.0 rc3 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:6.0:rc4:*:*:*:*:*:* | 6.0 rc4 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:6.0:rc5:*:*:*:*:*:* | 6.0 rc5 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:6.0:rc6:*:*:*:*:*:* | 6.0 rc6 | Vulnerable | Linux |
- cpe:2.3:o:linux:linux_kernel:6.0:rc3:*:*:*:*:*:* Versions 6.0 rc3 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:6.0:rc4:*:*:*:*:*:* Versions 6.0 rc4 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:6.0:rc5:*:*:*:*:*:* Versions 6.0 rc5 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:6.0:rc6:*:*:*:*:*:* Versions 6.0 rc6 Vulnerable ·Linux
Remediation
- Fix · CNA Linux (Linux) Fixed in 4.15, 4.20
- Fix · CNA Linux (Linux) Fixed in 5.10.147, 5.15.71, 5.19.12, 6.0
Vendor assessments
Red Hat
Red Hat rating: Moderate. Red Hat's page for this CVE →
| Product | Status | Plan or fix |
|---|---|---|
| Red Hat Enterprise Linux 6 | Affected | No fix planned: Out of support scope |
| Red Hat Enterprise Linux 7 | Affected | No fix planned: Out of support scope |
Not affected: 2 products
- Red Hat Enterprise Linux 8
- Red Hat Enterprise Linux 9
Timeline
- 2026-10-02 Threatist record created from CVE-2022-48664
- 2026-10-03 Alias added: GHSA-w94g-q3rj-7p4m
References
More Linux Kernel vulnerabilities
- 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
Sources
- CVE-2022-48664 · CVE Program
- CVE-2022-48664 · NVD
- FIRST EPSS
- GHSA-w94g-q3rj-7p4m · GitHub Advisory Database · CC BY 4.0
- CVE-2022-48664 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences