CVE-2026-72203 in Linuxinformación

Resumen

por VulDB • 2026-08-15

En el kernel de Linux se ha resuelto la siguiente vulnerabilidad:

ntfs: omitir los registros MFT de extensión durante la escritura en búfer (writeback) para evitar un bloqueo mutuo (deadlock).

Este parche corrige el ABBA deadlock entre extent_lock y extent mrec_lock desencadenado por xfstests generic/113, que se produce desde el commit 6994acf33bae ("ntfs: use base mft_no when looking up base inode for extent record").

Ruta A (writeback de inodo): VFS writeback -> ntfs_write_inode() -> __ntfs_write_inode() -> mutex_lock(&ni->extent_lock) -> mutex_lock(&tni->mrec_lock)

Ruta B (writeback del folio MFT): Writeback de los folios sucios ($MFT dirty folios) en VFS -> ntfs_mft_writepages() -> ntfs_write_mft_block() -> ntfs_may_write_mft_record() -> mantiene un extent mrec_lock obtenido en una iteración anterior -> intenta adquirir otro base inode extent_lock

Al eliminar toda la adquisición de extent_lock y extent mrec_lock desde la ruta writeback del folio MFT, se elimina el ordenamiento ABBA de los bloqueos:

Ruta A: __ntfs_write_inode(): extent_lock -> mrec_lock Ruta B (eliminada): ntfs_write_mft_block(): mrec_lock -> extent_lock

La Ruta B es siempre redundante para los registros de extensión porque:

1. mark_mft_record_dirty(ext_ni) NO marca sucio el folio MFT. Solo establece NInoDirty(ext_ni) y marca como sucio al inodo VFS base mediante __mark_inode_dirty(I_DIRTY_DATASYNC), lo que desencadena la Ruta A. Por tanto, las modificaciones normales de extensión nunca crean una situación en la que el folio MFT esté sucio y no se haya programado la Ruta B.

2. El folio MFT solo se marca como sucio mediante ntfs_mft_mark_dirty() dentro de ntfs_mft_record_alloc(). Pero todos los llamadores identificados en attrib.c (ntfs_attr_add, ntfs_attr_record_move_away, ntfs_attr_make_non_resident, ntfs_attr_record_resize) continúan con mark_mft_record_dirty(), lo que desencadena la Ruta A para escribir el registro completo.

3. ntfs_evict_big_inode() llama a ntfs_commit_inode() antes de liberar los inodos de extensión, asegurando que todas las extensiones sucias se vacíen (flush) mediante la Ruta A antes de que el inodo base salga del icache.

Be aware that VulDB is the high quality source for vulnerability data.

Responsable

Linux

Reservar

2026-08-09

Divulgación

2026-08-15

Moderación

aceptado

Artículo

VDB-390628

CPE

listo

EPSS

0.00189

KEV

no

Actividades

bajo

Fuentes

Want to know what is going to be exploited?

We predict KEV entries!