CVE-2025-22113

In the Linux kernel, the following vulnerability has been resolved: ext4: avoid journaling sb update on error if journal is destroying Presently we always BUG_ON if trying to start a transaction on a journal marked with JBD2_UNMOUNT, since this should never happen. However, while ltp running stress tests, it was observed that in case of some error handling paths, it is possible for update_super_work to start a transaction after the journal is destroyed eg: (umount) ext4_kill_sb kill_block_super generic_shutdown_super sync_filesystem /* commits all txns */ evict_inodes /* might start a new txn */ ext4_put_super flush_work(&sbi->s_sb_upd_work) /* flush the workqueue */ jbd2_journal_destroy journal_kill_thread journal->j_flags |= JBD2_UNMOUNT; jbd2_journal_commit_transaction jbd2_journal_get_descriptor_buffer jbd2_journal_bmap ext4_journal_bmap ext4_map_blocks ... ext4_inode_error ext4_handle_error schedule_work(&sbi->s_sb_upd_work) /* work queue kicks in */ update_super_work jbd2_journal_start start_this_handle BUG_ON(journal->j_flags & JBD2_UNMOUNT) Hence, introduce a new mount flag to indicate journal is destroying and only do a journaled (and deferred) update of sb if this flag is not set. Otherwise, just fallback to an un-journaled commit. Further, in the journal destroy path, we have the following sequence: 1. Set mount flag indicating journal is destroying 2. force a commit and wait for it 3. flush pending sb updates This sequence is important as it ensures that, after this point, there is no sb update that might be journaled so it is safe to update the sb outside the journal. (To avoid race discussed in 2d01ddc86606) Also, we don't need a similar check in ext4_grp_locked_error since it is only called from mballoc and AFAICT it would be always valid to schedule work here.
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.11:-:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.11:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.11:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.11:rc6:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.11:rc7:*:*:*:*:*:*

History

03 Nov 2025, 18:38

Type Values Removed Values Added
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5
References () https://git.kernel.org/stable/c/ce2f26e73783b4a7c46a86e3af5b5c8de0971790 - () https://git.kernel.org/stable/c/ce2f26e73783b4a7c46a86e3af5b5c8de0971790 - Patch
References () https://git.kernel.org/stable/c/db05767b5bc307143d99fe2afd8c43af58d2ebef - () https://git.kernel.org/stable/c/db05767b5bc307143d99fe2afd8c43af58d2ebef - Patch
References () https://git.kernel.org/stable/c/eddca44ddf810e27f0c96913aa3cc92ebd679ddb - () https://git.kernel.org/stable/c/eddca44ddf810e27f0c96913aa3cc92ebd679ddb - Patch
CPE cpe:2.3:o:linux:linux_kernel:5.11:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.11:rc7:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.11:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.11:rc6:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.11:-:*:*:*:*:*:*
CWE NVD-CWE-noinfo
First Time Linux
Linux linux Kernel

09 Sep 2025, 17:15

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: ext4: evitar el registro en diario de la actualización de sb en caso de error si el diario se está destruyendo. Actualmente, siempre aplicamos BUG_ON al intentar iniciar una transacción en un diario marcado con JBD2_UNMOUNT, ya que esto nunca debería ocurrir. Sin embargo, mientras ltp ejecutaba pruebas de estrés, se observó que en caso de algunas rutas de gestión de errores, es posible que update_super_work inicie una transacción después de que el diario se destruya, por ejemplo: (umount) ext4_kill_sb kill_block_super generic_shutdown_super sync_filesystem /* commits all txns */ evict_inodes /* might start a new txn */ ext4_put_super flush_work(&sbi->s_sb_upd_work) /* flush the workqueue */ jbd2_journal_destroy journal_kill_thread journal->j_flags |= JBD2_UNMOUNT; jbd2_journal_commit_transaction jbd2_journal_get_descriptor_buffer jbd2_journal_bmap ext4_journal_bmap ext4_map_blocks ... ext4_inode_error ext4_handle_error schedule_work(&sbi->s_sb_upd_work) /* work queue kicks in */ update_super_work jbd2_journal_start start_this_handle BUG_ON(journal->j_flags & JBD2_UNMOUNT) Por lo tanto, se introduce un nuevo indicador de montaje para indicar que el diario se está destruyendo y solo se realiza una actualización registrada (y diferida) de sb si este indicador no está configurado. De lo contrario, simplemente se recurre a una confirmación no registrada. Además, en la ruta de destrucción del diario, tenemos la siguiente secuencia: 1. Establecer el indicador de montaje que indica que el diario se está destruyendo 2. forzar una confirmación y esperarla 3. vaciar las actualizaciones pendientes del sb Esta secuencia es importante ya que garantiza que, después de este punto, no haya ninguna actualización del sb que pueda registrarse, por lo que es seguro actualizar el sb fuera del diario. (Para evitar la ejecución discutida en 2d01ddc86606) Además, no necesitamos una comprobación similar en ext4_grp_locked_error ya que solo se llama desde mballoc y AFAICT siempre sería válido programar el trabajo aquí.
References
  • () https://git.kernel.org/stable/c/eddca44ddf810e27f0c96913aa3cc92ebd679ddb -

16 Apr 2025, 15:16

Type Values Removed Values Added
New CVE

Information

Published : 2025-04-16 15:16

Updated : 2025-11-03 18:38


NVD link : CVE-2025-22113

Mitre link : CVE-2025-22113

CVE.ORG link : CVE-2025-22113


JSON object : View

Products Affected

linux

  • linux_kernel