cve-2022-48664
Vulnerability from cvelistv5
Published
2024-04-28 13:01
Modified
2024-11-04 12:14
Severity ?
EPSS score ?
Summary
btrfs: fix hang during unmount when stopping a space reclaim worker
References
{ "containers": { "adp": [ { "metrics": [ { "other": { "content": { "id": "CVE-2022-48664", "options": [ { "Exploitation": "none" }, { "Automatable": "no" }, { "Technical Impact": "partial" } ], "role": "CISA Coordinator", "timestamp": "2024-05-28T18:11:19.564410Z", "version": "2.0.3" }, "type": "ssvc" } } ], "providerMetadata": { "dateUpdated": "2024-06-04T17:16:37.812Z", "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "shortName": "CISA-ADP" }, "title": "CISA ADP Vulnrichment" }, { "providerMetadata": { "dateUpdated": "2024-08-03T15:17:55.826Z", "orgId": "af854a3a-2127-422b-91ae-364da2661108", "shortName": "CVE" }, "references": [ { "tags": [ "x_transferred" ], "url": "https://git.kernel.org/stable/c/6ac5b52e3f352f9cb270c89e6e1d4dadb564ddb8" }, { "tags": [ "x_transferred" ], "url": "https://git.kernel.org/stable/c/d8a76a2e514fbbb315a6dfff2d342de2de833994" }, { "tags": [ "x_transferred" ], "url": "https://git.kernel.org/stable/c/c338bea1fec5504290dc0acf026c9e7dba25004b" }, { "tags": [ "x_transferred" ], "url": "https://git.kernel.org/stable/c/a362bb864b8db4861977d00bd2c3222503ccc34b" } ], "title": "CVE Program Container" } ], "cna": { "affected": [ { "defaultStatus": "unaffected", "product": "Linux", "programFiles": [ "fs/btrfs/disk-io.c" ], "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "vendor": "Linux", "versions": [ { "lessThan": "6ac5b52e3f35", "status": "affected", "version": "d6fd0ae25c64", "versionType": "git" }, { "lessThan": "d8a76a2e514f", "status": "affected", "version": "d6fd0ae25c64", "versionType": "git" }, { "lessThan": "c338bea1fec5", "status": "affected", "version": "d6fd0ae25c64", "versionType": "git" }, { "lessThan": "a362bb864b8d", "status": "affected", "version": "d6fd0ae25c64", "versionType": "git" } ] }, { "defaultStatus": "affected", "product": "Linux", "programFiles": [ "fs/btrfs/disk-io.c" ], "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "vendor": "Linux", "versions": [ { "status": "affected", "version": "4.20" }, { "lessThan": "4.20", "status": "unaffected", "version": "0", "versionType": "semver" }, { "lessThanOrEqual": "5.10.*", "status": "unaffected", "version": "5.10.147", "versionType": "semver" }, { "lessThanOrEqual": "5.15.*", "status": "unaffected", "version": "5.15.71", "versionType": "semver" }, { "lessThanOrEqual": "5.19.*", "status": "unaffected", "version": "5.19.12", "versionType": "semver" }, { "lessThanOrEqual": "*", "status": "unaffected", "version": "6.0", "versionType": "original_commit_for_fix" } ] } ], "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbtrfs: fix hang during unmount when stopping a space reclaim worker\n\nOften when running generic/562 from fstests we can hang during unmount,\nresulting in a trace like this:\n\n Sep 07 11:52:00 debian9 unknown: run fstests generic/562 at 2022-09-07 11:52:00\n Sep 07 11:55:32 debian9 kernel: INFO: task umount:49438 blocked for more than 120 seconds.\n Sep 07 11:55:32 debian9 kernel: Not tainted 6.0.0-rc2-btrfs-next-122 #1\n Sep 07 11:55:32 debian9 kernel: \"echo 0 \u003e /proc/sys/kernel/hung_task_timeout_secs\" disables this message.\n Sep 07 11:55:32 debian9 kernel: task:umount state:D stack: 0 pid:49438 ppid: 25683 flags:0x00004000\n Sep 07 11:55:32 debian9 kernel: Call Trace:\n Sep 07 11:55:32 debian9 kernel: \u003cTASK\u003e\n Sep 07 11:55:32 debian9 kernel: __schedule+0x3c8/0xec0\n Sep 07 11:55:32 debian9 kernel: ? rcu_read_lock_sched_held+0x12/0x70\n Sep 07 11:55:32 debian9 kernel: schedule+0x5d/0xf0\n Sep 07 11:55:32 debian9 kernel: schedule_timeout+0xf1/0x130\n Sep 07 11:55:32 debian9 kernel: ? lock_release+0x224/0x4a0\n Sep 07 11:55:32 debian9 kernel: ? lock_acquired+0x1a0/0x420\n Sep 07 11:55:32 debian9 kernel: ? trace_hardirqs_on+0x2c/0xd0\n Sep 07 11:55:32 debian9 kernel: __wait_for_common+0xac/0x200\n Sep 07 11:55:32 debian9 kernel: ? usleep_range_state+0xb0/0xb0\n Sep 07 11:55:32 debian9 kernel: __flush_work+0x26d/0x530\n Sep 07 11:55:32 debian9 kernel: ? flush_workqueue_prep_pwqs+0x140/0x140\n Sep 07 11:55:32 debian9 kernel: ? trace_clock_local+0xc/0x30\n Sep 07 11:55:32 debian9 kernel: __cancel_work_timer+0x11f/0x1b0\n Sep 07 11:55:32 debian9 kernel: ? close_ctree+0x12b/0x5b3 [btrfs]\n Sep 07 11:55:32 debian9 kernel: ? __trace_bputs+0x10b/0x170\n Sep 07 11:55:32 debian9 kernel: close_ctree+0x152/0x5b3 [btrfs]\n Sep 07 11:55:32 debian9 kernel: ? evict_inodes+0x166/0x1c0\n Sep 07 11:55:32 debian9 kernel: generic_shutdown_super+0x71/0x120\n Sep 07 11:55:32 debian9 kernel: kill_anon_super+0x14/0x30\n Sep 07 11:55:32 debian9 kernel: btrfs_kill_super+0x12/0x20 [btrfs]\n Sep 07 11:55:32 debian9 kernel: deactivate_locked_super+0x2e/0xa0\n Sep 07 11:55:32 debian9 kernel: cleanup_mnt+0x100/0x160\n Sep 07 11:55:32 debian9 kernel: task_work_run+0x59/0xa0\n Sep 07 11:55:32 debian9 kernel: exit_to_user_mode_prepare+0x1a6/0x1b0\n Sep 07 11:55:32 debian9 kernel: syscall_exit_to_user_mode+0x16/0x40\n Sep 07 11:55:32 debian9 kernel: do_syscall_64+0x48/0x90\n Sep 07 11:55:32 debian9 kernel: entry_SYSCALL_64_after_hwframe+0x63/0xcd\n Sep 07 11:55:32 debian9 kernel: RIP: 0033:0x7fcde59a57a7\n Sep 07 11:55:32 debian9 kernel: RSP: 002b:00007ffe914217c8 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6\n Sep 07 11:55:32 debian9 kernel: RAX: 0000000000000000 RBX: 00007fcde5ae8264 RCX: 00007fcde59a57a7\n Sep 07 11:55:32 debian9 kernel: RDX: 0000000000000000 RSI: 0000000000000000 RDI: 000055b57556cdd0\n Sep 07 11:55:32 debian9 kernel: RBP: 000055b57556cba0 R08: 0000000000000000 R09: 00007ffe91420570\n Sep 07 11:55:32 debian9 kernel: R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000\n Sep 07 11:55:32 debian9 kernel: R13: 000055b57556cdd0 R14: 000055b57556ccb8 R15: 0000000000000000\n Sep 07 11:55:32 debian9 kernel: \u003c/TASK\u003e\n\nWhat happens is the following:\n\n1) The cleaner kthread tries to start a transaction to delete an unused\n block group, but the metadata reservation can not be satisfied right\n away, so a reservation ticket is created and it starts the async\n metadata reclaim task (fs_info-\u003easync_reclaim_work);\n\n2) Writeback for all the filler inodes with an i_size of 2K starts\n (generic/562 creates a lot of 2K files with the goal of filling\n metadata space). We try to create an inline extent for them, but we\n fail when trying to insert the inline extent with -ENOSPC (at\n cow_file_range_inline()) - since this is not critical, we fallback\n to non-inline mode (back to cow_file_range()), reserve extents\n---truncated---" } ], "providerMetadata": { "dateUpdated": "2024-11-04T12:14:15.683Z", "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux" }, "references": [ { "url": "https://git.kernel.org/stable/c/6ac5b52e3f352f9cb270c89e6e1d4dadb564ddb8" }, { "url": "https://git.kernel.org/stable/c/d8a76a2e514fbbb315a6dfff2d342de2de833994" }, { "url": "https://git.kernel.org/stable/c/c338bea1fec5504290dc0acf026c9e7dba25004b" }, { "url": "https://git.kernel.org/stable/c/a362bb864b8db4861977d00bd2c3222503ccc34b" } ], "title": "btrfs: fix hang during unmount when stopping a space reclaim worker", "x_generator": { "engine": "bippy-9e1c9544281a" } } }, "cveMetadata": { "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "assignerShortName": "Linux", "cveId": "CVE-2022-48664", "datePublished": "2024-04-28T13:01:41.496Z", "dateReserved": "2024-02-25T13:44:28.320Z", "dateUpdated": "2024-11-04T12:14:15.683Z", "state": "PUBLISHED" }, "dataType": "CVE_RECORD", "dataVersion": "5.1", "meta": { "nvd": "{\"cve\":{\"id\":\"CVE-2022-48664\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2024-04-28T13:15:08.030\",\"lastModified\":\"2024-04-29T12:42:03.667\",\"vulnStatus\":\"Awaiting Analysis\",\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nbtrfs: fix hang during unmount when stopping a space reclaim worker\\n\\nOften when running generic/562 from fstests we can hang during unmount,\\nresulting in a trace like this:\\n\\n Sep 07 11:52:00 debian9 unknown: run fstests generic/562 at 2022-09-07 11:52:00\\n Sep 07 11:55:32 debian9 kernel: INFO: task umount:49438 blocked for more than 120 seconds.\\n Sep 07 11:55:32 debian9 kernel: Not tainted 6.0.0-rc2-btrfs-next-122 #1\\n Sep 07 11:55:32 debian9 kernel: \\\"echo 0 \u003e /proc/sys/kernel/hung_task_timeout_secs\\\" disables this message.\\n Sep 07 11:55:32 debian9 kernel: task:umount state:D stack: 0 pid:49438 ppid: 25683 flags:0x00004000\\n Sep 07 11:55:32 debian9 kernel: Call Trace:\\n Sep 07 11:55:32 debian9 kernel: \u003cTASK\u003e\\n Sep 07 11:55:32 debian9 kernel: __schedule+0x3c8/0xec0\\n Sep 07 11:55:32 debian9 kernel: ? rcu_read_lock_sched_held+0x12/0x70\\n Sep 07 11:55:32 debian9 kernel: schedule+0x5d/0xf0\\n Sep 07 11:55:32 debian9 kernel: schedule_timeout+0xf1/0x130\\n Sep 07 11:55:32 debian9 kernel: ? lock_release+0x224/0x4a0\\n Sep 07 11:55:32 debian9 kernel: ? lock_acquired+0x1a0/0x420\\n Sep 07 11:55:32 debian9 kernel: ? trace_hardirqs_on+0x2c/0xd0\\n Sep 07 11:55:32 debian9 kernel: __wait_for_common+0xac/0x200\\n Sep 07 11:55:32 debian9 kernel: ? usleep_range_state+0xb0/0xb0\\n Sep 07 11:55:32 debian9 kernel: __flush_work+0x26d/0x530\\n Sep 07 11:55:32 debian9 kernel: ? flush_workqueue_prep_pwqs+0x140/0x140\\n Sep 07 11:55:32 debian9 kernel: ? trace_clock_local+0xc/0x30\\n Sep 07 11:55:32 debian9 kernel: __cancel_work_timer+0x11f/0x1b0\\n Sep 07 11:55:32 debian9 kernel: ? close_ctree+0x12b/0x5b3 [btrfs]\\n Sep 07 11:55:32 debian9 kernel: ? __trace_bputs+0x10b/0x170\\n Sep 07 11:55:32 debian9 kernel: close_ctree+0x152/0x5b3 [btrfs]\\n Sep 07 11:55:32 debian9 kernel: ? evict_inodes+0x166/0x1c0\\n Sep 07 11:55:32 debian9 kernel: generic_shutdown_super+0x71/0x120\\n Sep 07 11:55:32 debian9 kernel: kill_anon_super+0x14/0x30\\n Sep 07 11:55:32 debian9 kernel: btrfs_kill_super+0x12/0x20 [btrfs]\\n Sep 07 11:55:32 debian9 kernel: deactivate_locked_super+0x2e/0xa0\\n Sep 07 11:55:32 debian9 kernel: cleanup_mnt+0x100/0x160\\n Sep 07 11:55:32 debian9 kernel: task_work_run+0x59/0xa0\\n Sep 07 11:55:32 debian9 kernel: exit_to_user_mode_prepare+0x1a6/0x1b0\\n Sep 07 11:55:32 debian9 kernel: syscall_exit_to_user_mode+0x16/0x40\\n Sep 07 11:55:32 debian9 kernel: do_syscall_64+0x48/0x90\\n Sep 07 11:55:32 debian9 kernel: entry_SYSCALL_64_after_hwframe+0x63/0xcd\\n Sep 07 11:55:32 debian9 kernel: RIP: 0033:0x7fcde59a57a7\\n Sep 07 11:55:32 debian9 kernel: RSP: 002b:00007ffe914217c8 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6\\n Sep 07 11:55:32 debian9 kernel: RAX: 0000000000000000 RBX: 00007fcde5ae8264 RCX: 00007fcde59a57a7\\n Sep 07 11:55:32 debian9 kernel: RDX: 0000000000000000 RSI: 0000000000000000 RDI: 000055b57556cdd0\\n Sep 07 11:55:32 debian9 kernel: RBP: 000055b57556cba0 R08: 0000000000000000 R09: 00007ffe91420570\\n Sep 07 11:55:32 debian9 kernel: R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000\\n Sep 07 11:55:32 debian9 kernel: R13: 000055b57556cdd0 R14: 000055b57556ccb8 R15: 0000000000000000\\n Sep 07 11:55:32 debian9 kernel: \u003c/TASK\u003e\\n\\nWhat happens is the following:\\n\\n1) The cleaner kthread tries to start a transaction to delete an unused\\n block group, but the metadata reservation can not be satisfied right\\n away, so a reservation ticket is created and it starts the async\\n metadata reclaim task (fs_info-\u003easync_reclaim_work);\\n\\n2) Writeback for all the filler inodes with an i_size of 2K starts\\n (generic/562 creates a lot of 2K files with the goal of filling\\n metadata space). We try to create an inline extent for them, but we\\n fail when trying to insert the inline extent with -ENOSPC (at\\n cow_file_range_inline()) - since this is not critical, we fallback\\n to non-inline mode (back to cow_file_range()), reserve extents\\n---truncated---\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: btrfs: se corrige el bloqueo durante el desmontaje al detener un trabajador de recuperaci\u00f3n de espacio. A menudo, cuando ejecutamos generic/562 desde fstests, podemos bloquearnos durante el desmontaje, lo que resulta en un rastro como este: 07 de septiembre 11:52 :00 debian9 desconocido: ejecute fstests generic/562 el 07/09/2022 11:52:00 07 de septiembre 11:55:32 kernel debian9: INFORMACI\u00d3N: tarea umount:49438 bloqueada durante m\u00e1s de 120 segundos. 07 de septiembre 11:55:32 kernel debian9: no contaminado 6.0.0-rc2-btrfs-next-122 #1 07 de septiembre 11:55:32 kernel debian9: \\\"echo 0 \u0026gt; /proc/sys/kernel/hung_task_timeout_secs\\\" desactiva esto mensaje. 07 de septiembre 11:55:32 kernel debian9: tarea: estado de montaje: D pila: 0 pid:49438 ppid: 25683 banderas:0x00004000 07 de septiembre 11:55:32 kernel de debian9: Seguimiento de llamadas: 07 de septiembre 11:55:32 kernel de debian9 : 07 de septiembre 11:55:32 kernel debian9: __schedule+0x3c8/0xec0 07 de septiembre 11:55:32 kernel debian9: ? rcu_read_lock_sched_held+0x12/0x70 07 de septiembre 11:55:32 kernel debian9: horario+0x5d/0xf0 07 de septiembre 11:55:32 kernel debian9: Schedule_timeout+0xf1/0x130 07 de septiembre 11:55:32 kernel debian9:? lock_release+0x224/0x4a0 7 de septiembre 11:55:32 kernel debian9:? lock_acquired+0x1a0/0x420 7 de septiembre 11:55:32 kernel debian9:? trace_hardirqs_on+0x2c/0xd0 07 de septiembre 11:55:32 kernel debian9: __wait_for_common+0xac/0x200 07 de septiembre 11:55:32 kernel debian9:? usleep_range_state+0xb0/0xb0 07 de septiembre 11:55:32 kernel debian9: __flush_work+0x26d/0x530 07 de septiembre 11:55:32 kernel debian9:? Flush_workqueue_prep_pwqs+0x140/0x140 7 de septiembre 11:55:32 kernel debian9:? trace_clock_local+0xc/0x30 7 de septiembre 11:55:32 kernel debian9: __cancel_work_timer+0x11f/0x1b0 7 de septiembre 11:55:32 kernel debian9:? close_ctree+0x12b/0x5b3 [btrfs] 07 de septiembre 11:55:32 kernel debian9:? __trace_bputs+0x10b/0x170 07 de septiembre 11:55:32 kernel debian9: close_ctree+0x152/0x5b3 [btrfs] 07 de septiembre 11:55:32 kernel debian9:? evict_inodes+0x166/0x1c0 07 de septiembre 11:55:32 kernel debian9: generic_shutdown_super+0x71/0x120 07 de septiembre 11:55:32 kernel debian9: kill_anon_super+0x14/0x30 07 de septiembre 11:55:32 kernel debian9: 0 [btrfs] 07 de septiembre 11:55:32 kernel debian9: desactivar_locked_super+0x2e/0xa0 07 de septiembre 11:55:32 kernel debian9: cleanup_mnt+0x100/0x160 07 de septiembre 11:55:32 kernel de debian9: task_work_run+0x59/0xa0 07 de septiembre 11:55:32 kernel debian9: exit_to_user_mode_prepare+0x1a6/0x1b0 07 de septiembre 11:55:32 kernel debian9: syscall_exit_to_user_mode+0x16/0x40 07 de septiembre 11:55:32 kernel de debian9: do_syscall_64+0x48/0x90 07 de septiembre: 55:32 kernel debian9: Entry_SYSCALL_64_after_hwframe+0x63/0xcd 07 de septiembre 11:55:32 kernel debian9: RIP: 0033:0x7fcde59a57a7 07 de septiembre 11:55:32 kernel debian9: RSP: 002b:00007ffe914217c8 EFLAGS: ORIG_RAX: 00000000000000a6 07 de septiembre 11:55: 32 kernel debian9: RAX: 0000000000000000 RBX: 00007fcde5ae8264 RCX: 00007fcde59a57a7 07 de septiembre 11:55:32 kernel debian9: RDX: 0000000000000000 RSI: 00 RDI: 000055b57556cdd0 07 de septiembre 11:55:32 kernel debian9: RBP: 000055b57556cba0 R08: 0000000000000000 R09: 00007ffe91420570 07 de septiembre 11:55:32 kernel debian9: R10: 0000000000000000 R11: 0000000000000246 R12: 00000000000000000 07 de septiembre 11:55:32 kernel debian9: R13: 55b57556cdd0 R14: 000055b57556ccb8 R15: 0000000000000000 7 de septiembre 11:55:32 kernel debian9: \u0026lt; /TASK\u0026gt; Lo que sucede es lo siguiente: 1) El kthread limpiador intenta iniciar una transacci\u00f3n para eliminar un grupo de bloques no utilizado, pero la reserva de metadatos no se puede satisfacer de inmediato, por lo que se crea un ticket de reserva e inicia la recuperaci\u00f3n as\u00edncrona de metadatos---truncadas---\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/6ac5b52e3f352f9cb270c89e6e1d4dadb564ddb8\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/a362bb864b8db4861977d00bd2c3222503ccc34b\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/c338bea1fec5504290dc0acf026c9e7dba25004b\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/d8a76a2e514fbbb315a6dfff2d342de2de833994\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}" } }
Loading...
Loading...
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.