CVE-2024-42149

In the Linux kernel, the following vulnerability has been resolved: fs: don't misleadingly warn during thaw operations The block device may have been frozen before it was claimed by a filesystem. Concurrently another process might try to mount that frozen block device and has temporarily claimed the block device for that purpose causing a concurrent fs_bdev_thaw() to end up here. The mounter is already about to abort mounting because they still saw an elevanted bdev->bd_fsfreeze_count so get_bdev_super() will return NULL in that case. For example, P1 calls dm_suspend() which calls into bdev_freeze() before the block device has been claimed by the filesystem. This brings bdev->bd_fsfreeze_count to 1 and no call into fs_bdev_freeze() is required. Now P2 tries to mount that frozen block device. It claims it and checks bdev->bd_fsfreeze_count. As it's elevated it aborts mounting. In the meantime P3 called dm_resume(). P3 sees that the block device is already claimed by a filesystem and calls into fs_bdev_thaw(). P3 takes a passive reference and realizes that the filesystem isn't ready yet. P3 puts itself to sleep to wait for the filesystem to become ready. P2 now puts the last active reference to the filesystem and marks it as dying. P3 gets woken, sees that the filesystem is dying and get_bdev_super() fails.
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.10:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.10:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.10:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.10:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.10:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.10:rc6:*:*:*:*:*:*

History

09 Dec 2024, 23:05

Type Values Removed Values Added
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5
CWE CWE-476
First Time Linux linux Kernel
Linux
References () https://git.kernel.org/stable/c/25b1e3906e050d452427bc51620bb7f0a591373a - () https://git.kernel.org/stable/c/25b1e3906e050d452427bc51620bb7f0a591373a - Patch
References () https://git.kernel.org/stable/c/2ae4db5647d807efb6a87c09efaa6d1db9c905d7 - () https://git.kernel.org/stable/c/2ae4db5647d807efb6a87c09efaa6d1db9c905d7 - Patch
CPE cpe:2.3:o:linux:linux_kernel:6.10:rc6:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.10:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.10:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.10:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.10:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.10:rc3:*:*:*:*:*:*

21 Nov 2024, 09:33

Type Values Removed Values Added
References () https://git.kernel.org/stable/c/25b1e3906e050d452427bc51620bb7f0a591373a - () https://git.kernel.org/stable/c/25b1e3906e050d452427bc51620bb7f0a591373a -
References () https://git.kernel.org/stable/c/2ae4db5647d807efb6a87c09efaa6d1db9c905d7 - () https://git.kernel.org/stable/c/2ae4db5647d807efb6a87c09efaa6d1db9c905d7 -

30 Jul 2024, 13:32

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, se resolvió la siguiente vulnerabilidad: fs: no advierta de manera engañosa durante las operaciones de descongelación. Es posible que el dispositivo de bloque se haya congelado antes de que un sistema de archivos lo reclamara. Al mismo tiempo, otro proceso podría intentar montar ese dispositivo de bloque congelado y ha reclamado temporalmente el dispositivo de bloque para ese propósito, lo que provoca que un fs_bdev_thaw() concurrente termine aquí. El montador ya está a punto de cancelar el montaje porque todavía vio un bdev->bd_fsfreeze_count elevado, por lo que get_bdev_super() devolverá NULL en ese caso. Por ejemplo, P1 llama a dm_suspend(), que llama a bdev_freeze() antes de que el sistema de archivos haya reclamado el dispositivo de bloque. Esto lleva bdev->bd_fsfreeze_count a 1 y no se requiere ninguna llamada a fs_bdev_freeze(). Ahora P2 intenta montar ese dispositivo de bloque congelado. Lo reclama y comprueba bdev->bd_fsfreeze_count. Al estar elevado se aborta el montaje. Mientras tanto, P3 llamó a dm_resume(). P3 ve que el dispositivo de bloque ya está reclamado por un sistema de archivos y llama a fs_bdev_thaw(). P3 toma una referencia pasiva y se da cuenta de que el sistema de archivos aún no está listo. P3 se pone en modo de suspensión para esperar a que el sistema de archivos esté listo. P2 ahora coloca la última referencia activa al sistema de archivos y lo marca como moribundo. P3 se despierta, ve que el sistema de archivos está muriendo y get_bdev_super() falla.

30 Jul 2024, 08:15

Type Values Removed Values Added
New CVE

Information

Published : 2024-07-30 08:15

Updated : 2024-12-09 23:05


NVD link : CVE-2024-42149

Mitre link : CVE-2024-42149

CVE.ORG link : CVE-2024-42149


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-476

NULL Pointer Dereference