In the Linux kernel, the following vulnerability has been resolved:
btrfs: harden block_group::bg_list against list_del() races
As far as I can tell, these calls of list_del_init() on bg_list cannot
run concurrently with btrfs_mark_bg_unused() or btrfs_mark_bg_to_reclaim(),
as they are in transaction error paths and situations where the block
group is readonly.
However, if there is any chance at all of racing with mark_bg_unused(),
or a different future user of bg_list, better to be safe than sorry.
Otherwise we risk the following interleaving (bg_list refcount in parens)
T1 (some random op) T2 (btrfs_mark_bg_unused)
!list_empty(&bg->bg_list); (1)
list_del_init(&bg->bg_list); (1)
list_move_tail (1)
btrfs_put_block_group (0)
btrfs_delete_unused_bgs
bg = list_first_entry
list_del_init(&bg->bg_list);
btrfs_put_block_group(bg); (-1)
Ultimately, this results in a broken ref count that hits zero one deref
early and the real final deref underflows the refcount, resulting in a WARNING.
References
Configurations
Configuration 1 (hide)
|
History
12 Nov 2025, 20:08
| Type | Values Removed | Values Added |
|---|---|---|
| CWE | NVD-CWE-noinfo | |
| CVSS |
v2 : v3 : |
v2 : unknown
v3 : 5.5 |
| First Time |
Linux
Linux linux Kernel |
|
| CPE | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | |
| References | () https://git.kernel.org/stable/c/185fd73e5ac06027c4be9a129e59193f6a3ef202 - Patch | |
| References | () https://git.kernel.org/stable/c/7511e29cf1355b2c47d0effb39e463119913e2f6 - Patch | |
| References | () https://git.kernel.org/stable/c/909e60fb469d4101c6b08cf6e622efb062bb24a1 - Patch | |
| References | () https://git.kernel.org/stable/c/bf089c4d1141b27332c092b1dcca5022c415a3b6 - Patch | |
| Summary | (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: btrfs: endurecer block_group::bg_list contra ejecuciones list_del() Hasta donde puedo decir, estas llamadas de list_del_init() en bg_list no se pueden ejecutar simultáneamente con btrfs_mark_bg_unused() o btrfs_mark_bg_to_reclaim(), ya que están en rutas de error de transacción y situaciones en las que el grupo de bloques es de solo lectura. Sin embargo, si hay alguna posibilidad de competir con mark_bg_unused(), o con un futuro usuario diferente de bg_list, más vale prevenir que curar. De lo contrario, nos arriesgamos al siguiente intercalado (bg_list refcount entre paréntesis) T1 (alguna operación aleatoria) T2 (btrfs_mark_bg_unused) !list_empty(&bg->bg_list); (1) list_del_init(&bg->bg_list); (1) list_move_tail (1) btrfs_put_block_group (0) btrfs_delete_unused_bgs bg = list_first_entry list_del_init(&bg->bg_list); btrfs_put_block_group(bg); (-1) En última instancia, esto da como resultado un recuento de referencias roto que llega a cero un deref antes y el deref final real desborda el recuento de referencias, lo que genera una ADVERTENCIA. |
12 May 2025, 17:32
| Type | Values Removed | Values Added |
|---|---|---|
| Summary |
|
09 May 2025, 07:16
| Type | Values Removed | Values Added |
|---|---|---|
| New CVE |
Information
Published : 2025-05-09 07:16
Updated : 2025-11-12 20:08
NVD link : CVE-2025-37856
Mitre link : CVE-2025-37856
CVE.ORG link : CVE-2025-37856
JSON object : View
Products Affected
linux
- linux_kernel
CWE
