cve-2024-46733
Vulnerability from cvelistv5
Published
2024-09-18 06:32
Modified
2024-12-19 09:22
Severity ?
EPSS score ?
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.
References
Impacted products
{ "containers": { "adp": [ { "metrics": [ { "other": { "content": { "id": "CVE-2024-46733", "options": [ { "Exploitation": "none" }, { "Automatable": "no" }, { "Technical Impact": "partial" } ], "role": "CISA Coordinator", "timestamp": "2024-09-29T14:53:35.751159Z", "version": "2.0.3" }, "type": "ssvc" } } ], "providerMetadata": { "dateUpdated": "2024-09-29T14:53:50.933Z", "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "shortName": "CISA-ADP" }, "title": "CISA ADP Vulnrichment" } ], "cna": { "affected": [ { "defaultStatus": "unaffected", "product": "Linux", "programFiles": [ "fs/btrfs/inode.c" ], "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "vendor": "Linux", "versions": [ { "lessThan": "e42ef22bc10f0309c0c65d8d6ca8b4127a674b7f", "status": "affected", "version": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2", "versionType": "git" }, { "lessThan": "30479f31d44d47ed00ae0c7453d9b253537005b2", "status": "affected", "version": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2", "versionType": "git" } ] }, { "defaultStatus": "affected", "product": "Linux", "programFiles": [ "fs/btrfs/inode.c" ], "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "vendor": "Linux", "versions": [ { "lessThanOrEqual": "6.10.*", "status": "unaffected", "version": "6.10.9", "versionType": "semver" }, { "lessThanOrEqual": "*", "status": "unaffected", "version": "6.11", "versionType": "original_commit_for_fix" } ] } ], "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbtrfs: fix qgroup reserve leaks in cow_file_range\n\nIn the buffered write path, the dirty page owns the qgroup reserve until\nit creates an ordered_extent.\n\nTherefore, any errors that occur before the ordered_extent is created\nmust free that reservation, or else the space is leaked. The fstest\ngeneric/475 exercises various IO error paths, and is able to trigger\nerrors in cow_file_range where we fail to get to allocating the ordered\nextent. Note that because we *do* clear delalloc, we are likely to\nremove the inode from the delalloc list, so the inodes/pages to not have\ninvalidate/launder called on them in the commit abort path.\n\nThis results in failures at the unmount stage of the test that look like:\n\n BTRFS: error (device dm-8 state EA) in cleanup_transaction:2018: errno=-5 IO failure\n BTRFS: error (device dm-8 state EA) in btrfs_replace_file_extents:2416: errno=-5 IO failure\n BTRFS warning (device dm-8 state EA): qgroup 0/5 has unreleased space, type 0 rsv 28672\n ------------[ cut here ]------------\n WARNING: CPU: 3 PID: 22588 at fs/btrfs/disk-io.c:4333 close_ctree+0x222/0x4d0 [btrfs]\n Modules linked in: btrfs blake2b_generic libcrc32c xor zstd_compress raid6_pq\n CPU: 3 PID: 22588 Comm: umount Kdump: loaded Tainted: G W 6.10.0-rc7-gab56fde445b8 #21\n Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Arch Linux 1.16.3-1-1 04/01/2014\n RIP: 0010:close_ctree+0x222/0x4d0 [btrfs]\n RSP: 0018:ffffb4465283be00 EFLAGS: 00010202\n RAX: 0000000000000001 RBX: ffffa1a1818e1000 RCX: 0000000000000001\n RDX: 0000000000000000 RSI: ffffb4465283bbe0 RDI: ffffa1a19374fcb8\n RBP: ffffa1a1818e13c0 R08: 0000000100028b16 R09: 0000000000000000\n R10: 0000000000000003 R11: 0000000000000003 R12: ffffa1a18ad7972c\n R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000\n FS: 00007f9168312b80(0000) GS:ffffa1a4afcc0000(0000) knlGS:0000000000000000\n CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033\n CR2: 00007f91683c9140 CR3: 000000010acaa000 CR4: 00000000000006f0\n Call Trace:\n \u003cTASK\u003e\n ? close_ctree+0x222/0x4d0 [btrfs]\n ? __warn.cold+0x8e/0xea\n ? close_ctree+0x222/0x4d0 [btrfs]\n ? report_bug+0xff/0x140\n ? handle_bug+0x3b/0x70\n ? exc_invalid_op+0x17/0x70\n ? asm_exc_invalid_op+0x1a/0x20\n ? close_ctree+0x222/0x4d0 [btrfs]\n generic_shutdown_super+0x70/0x160\n kill_anon_super+0x11/0x40\n btrfs_kill_super+0x11/0x20 [btrfs]\n deactivate_locked_super+0x2e/0xa0\n cleanup_mnt+0xb5/0x150\n task_work_run+0x57/0x80\n syscall_exit_to_user_mode+0x121/0x130\n do_syscall_64+0xab/0x1a0\n entry_SYSCALL_64_after_hwframe+0x77/0x7f\n RIP: 0033:0x7f916847a887\n ---[ end trace 0000000000000000 ]---\n BTRFS error (device dm-8 state EA): qgroup reserved space leaked\n\nCases 2 and 3 in the out_reserve path both pertain to this type of leak\nand must free the reserved qgroup data. Because it is already an error\npath, I opted not to handle the possible errors in\nbtrfs_free_qgroup_data." } ], "providerMetadata": { "dateUpdated": "2024-12-19T09:22:02.371Z", "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux" }, "references": [ { "url": "https://git.kernel.org/stable/c/e42ef22bc10f0309c0c65d8d6ca8b4127a674b7f" }, { "url": "https://git.kernel.org/stable/c/30479f31d44d47ed00ae0c7453d9b253537005b2" } ], "title": "btrfs: fix qgroup reserve leaks in cow_file_range", "x_generator": { "engine": "bippy-5f407fcff5a0" } } }, "cveMetadata": { "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "assignerShortName": "Linux", "cveId": "CVE-2024-46733", "datePublished": "2024-09-18T06:32:27.453Z", "dateReserved": "2024-09-11T15:12:18.257Z", "dateUpdated": "2024-12-19T09:22:02.371Z", "state": "PUBLISHED" }, "dataType": "CVE_RECORD", "dataVersion": "5.1", "vulnerability-lookup:meta": { "nvd": "{\"cve\":{\"id\":\"CVE-2024-46733\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2024-09-18T07:15:04.170\",\"lastModified\":\"2024-09-20T12:30:51.220\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nbtrfs: fix qgroup reserve leaks in cow_file_range\\n\\nIn the buffered write path, the dirty page owns the qgroup reserve until\\nit creates an ordered_extent.\\n\\nTherefore, any errors that occur before the ordered_extent is created\\nmust free that reservation, or else the space is leaked. The fstest\\ngeneric/475 exercises various IO error paths, and is able to trigger\\nerrors in cow_file_range where we fail to get to allocating the ordered\\nextent. Note that because we *do* clear delalloc, we are likely to\\nremove the inode from the delalloc list, so the inodes/pages to not have\\ninvalidate/launder called on them in the commit abort path.\\n\\nThis results in failures at the unmount stage of the test that look like:\\n\\n BTRFS: error (device dm-8 state EA) in cleanup_transaction:2018: errno=-5 IO failure\\n BTRFS: error (device dm-8 state EA) in btrfs_replace_file_extents:2416: errno=-5 IO failure\\n BTRFS warning (device dm-8 state EA): qgroup 0/5 has unreleased space, type 0 rsv 28672\\n ------------[ cut here ]------------\\n WARNING: CPU: 3 PID: 22588 at fs/btrfs/disk-io.c:4333 close_ctree+0x222/0x4d0 [btrfs]\\n Modules linked in: btrfs blake2b_generic libcrc32c xor zstd_compress raid6_pq\\n CPU: 3 PID: 22588 Comm: umount Kdump: loaded Tainted: G W 6.10.0-rc7-gab56fde445b8 #21\\n Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Arch Linux 1.16.3-1-1 04/01/2014\\n RIP: 0010:close_ctree+0x222/0x4d0 [btrfs]\\n RSP: 0018:ffffb4465283be00 EFLAGS: 00010202\\n RAX: 0000000000000001 RBX: ffffa1a1818e1000 RCX: 0000000000000001\\n RDX: 0000000000000000 RSI: ffffb4465283bbe0 RDI: ffffa1a19374fcb8\\n RBP: ffffa1a1818e13c0 R08: 0000000100028b16 R09: 0000000000000000\\n R10: 0000000000000003 R11: 0000000000000003 R12: ffffa1a18ad7972c\\n R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000\\n FS: 00007f9168312b80(0000) GS:ffffa1a4afcc0000(0000) knlGS:0000000000000000\\n CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033\\n CR2: 00007f91683c9140 CR3: 000000010acaa000 CR4: 00000000000006f0\\n Call Trace:\\n \u003cTASK\u003e\\n ? close_ctree+0x222/0x4d0 [btrfs]\\n ? __warn.cold+0x8e/0xea\\n ? close_ctree+0x222/0x4d0 [btrfs]\\n ? report_bug+0xff/0x140\\n ? handle_bug+0x3b/0x70\\n ? exc_invalid_op+0x17/0x70\\n ? asm_exc_invalid_op+0x1a/0x20\\n ? close_ctree+0x222/0x4d0 [btrfs]\\n generic_shutdown_super+0x70/0x160\\n kill_anon_super+0x11/0x40\\n btrfs_kill_super+0x11/0x20 [btrfs]\\n deactivate_locked_super+0x2e/0xa0\\n cleanup_mnt+0xb5/0x150\\n task_work_run+0x57/0x80\\n syscall_exit_to_user_mode+0x121/0x130\\n do_syscall_64+0xab/0x1a0\\n entry_SYSCALL_64_after_hwframe+0x77/0x7f\\n RIP: 0033:0x7f916847a887\\n ---[ end trace 0000000000000000 ]---\\n BTRFS error (device dm-8 state EA): qgroup reserved space leaked\\n\\nCases 2 and 3 in the out_reserve path both pertain to this type of leak\\nand must free the reserved qgroup data. Because it is already an error\\npath, I opted not to handle the possible errors in\\nbtrfs_free_qgroup_data.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: btrfs: reparar fugas de reserva de qgroup en cow_file_range En la ruta de escritura en b\u00fafer, la p\u00e1gina sucia posee la reserva de qgroup hasta que crea una ordered_extent. Por lo tanto, cualquier error que ocurra antes de que se cree la ordered_extent debe liberar esa reserva, o de lo contrario se pierde el espacio. El fstest generic/475 ejercita varias rutas de error de E/S y puede desencadenar errores en cow_file_range donde no logramos asignar la extensi\u00f3n ordenada. Tenga en cuenta que debido a que *s\u00ed* borramos delalloc, es probable que eliminemos el inodo de la lista de delalloc, por lo que los inodos/p\u00e1ginas no tienen una llamada de invalidaci\u00f3n/lavado en ellos en la ruta de aborto de confirmaci\u00f3n. Esto genera fallas en la etapa de desmontaje de la prueba que se ven as\u00ed: BTRFS: error (dispositivo dm-8 estado EA) en cleanup_transaction:2018: errno=-5 falla de E/S BTRFS: error (dispositivo dm-8 estado EA) en btrfs_replace_file_extents:2416: errno=-5 falla de E/S Advertencia de BTRFS (dispositivo dm-8 estado EA): qgroup 0/5 tiene espacio sin liberar, tipo 0 rsv 28672 ------------[ cortar aqu\u00ed ]------------ ADVERTENCIA: CPU: 3 PID: 22588 en fs/btrfs/disk-io.c:4333 close_ctree+0x222/0x4d0 [btrfs] M\u00f3dulos vinculados en: btrfs blake2b_generic libcrc32c xor zstd_compress raid6_pq CPU: 3 PID: 22588 Comm: umount Kdump: cargado Tainted: GW 6.10.0-rc7-gab56fde445b8 #21 Nombre del hardware: PC est\u00e1ndar QEMU (i440FX + PIIX, 1996), BIOS Arch Linux 1.16.3-1-1 01/04/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: 000000000000003 R11: 0000000000000003 R12: ffffa1a18ad7972c R13: 000000000000000 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 Seguimiento de llamadas: ? close_ctree+0x222/0x4d0 [btrfs] ? __warn.cold+0x8e/0xea ? close_ctree+0x222/0x4d0 [btrfs] ? reportar_error+0xff/0x140 ? manejar_error+0x3b/0x70 ? exc_op_inv\u00e1lida+0x17/0x70 ? asm_exc_op_inv\u00e1lida+0x1a/0x20 ? cerrar_ctree+0x222/0x4d0 [btrfs] apagado_gen\u00e9rico_super+0x70/0x160 matar_an\u00f3nimo_super+0x11/0x40 btrfs_kill_super+0x11/0x20 [btrfs] desactivar_bloqueado_super+0x2e/0xa0 limpieza_mnt+0xb5/0x150 ejecuci\u00f3n_trabajo_tarea+0x57/0x80 salida_llamada_al_sistema_modo_usuario_+0x121/0x130 hacer_llamada_al_sistema_64+0xab/0x1a0 entrada_SYSCALL_64_despu\u00e9s_de_hwframe+0x77/0x7f RIP: 0033:0x7f916847a887 ---[ fin de seguimiento 0000000000000000 ]--- Error BTRFS (estado del dispositivo dm-8 EA): se filtr\u00f3 el espacio reservado del qgroup Los casos 2 y 3 en la ruta out_reserve pertenecen a este tipo de fuga y deben liberar los datos reservados del qgroup. Debido a que ya es una ruta de error, opt\u00e9 por no manejar los posibles errores en btrfs_free_qgroup_data.\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/30479f31d44d47ed00ae0c7453d9b253537005b2\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/e42ef22bc10f0309c0c65d8d6ca8b4127a674b7f\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}" } }
Loading…
Loading…
Sightings
Author | Source | Type | Date |
---|
Nomenclature
- 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.