CVE-2026-92503 in Linuxinformación

Resumen

por VulDB • 2026-09-18

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

ext4: corrección del bloqueo mutuo ABBA en ext4_xattr_inode_cache_find()

Syzbot/stress-ng reportó un bloqueo mutuo ABBA en ext4 al ejecutar cargas de trabajo concurrentes con atributos extendidos (utilizando la opción de montaje/formato ea_inode).

El bloqueo se produce entre la transacción en ejecución y el hilo de desalojo: - Tarea 1 (stress-ng): Mantiene una referencia a un mbcache_entry compartido (ce) y llama a ext4_xattr_inode_cache_find() -> ext4_iget() para recuperar el inode EA correspondiente. Dado que el inode EA se está desalojando actualmente, ext4_iget() bloquea en __wait_on_freeing_inode() esperando a que finalice el desalojo. - Tarea 2 (hilo de desalojo): Está desalojando actualmente el mismo inode EA en ext4_evict_ea_inode(). Llama a mb_cache_entry_wait_unused(oe), lo cual bloquea la espera a que la Tarea 1 libere la referencia al mbcache_entry.

Para romper este bloqueo, se implementó una nueva bandera de configuración para ext4_iget() llamada EXT4_IGET_NOWAIT. Cuando está activada, realiza una búsqueda no bloqueante del inode mediante la API find_inode_nowait() del VFS.

Si el inode se está desalojando actualmente (marcado con I_FREEING o I_WILL_FREE) o creando (I_CREATING), o si no está presente en la caché de inodes del VFS (cache miss), simplemente se omite (devolviendo -ENOENT) en lugar de esperar a que finalice el desalojo/creación, rompiendo así el ciclo ABBA.

Dado que devolvemos -ENOENT inmediatamente ante un cache miss, nunca intentamos asignar un nuevo inode ni llamar a iget_locked(), eliminando por completo cualquier ventana de carrera TOCTOU.

Si el inode devuelto es I_NEW, se espera a que su inicialización se limpie mediante wait_on_new_inode(). Si la inicialización falla y el inode se deshasha durante el despertar en wait_on_new_inode() (por ejemplo, debido a un error de lectura E/S en otro hilo), se libera la referencia de forma segura y se devuelve -ENOENT. Esta comprobación de estado no hashado se ejecuta incondicionalmente en todas las rutas con acierto en caché para manejar correctamente los fallos de inicialización concurrentes.

Finalmente, las comprobaciones de validación estándar (incluyendo is_bad_inode, EXT4_EA_INODE_FL, file_acl y flags xattr) se ejecutan normalmente dentro de check_igot_inode() para garantizar completamente la seguridad a nivel VFS.

En ext4_xattr_inode_cache_find(), se invoca a ext4_iget() con la nueva bandera EXT4_IGET_NOWAIT para realizar la búsqueda en caché no bloqueante.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsable

Linux

Reservar

2026-09-16

Divulgación

2026-09-17

Moderación

aceptado

Artículo

VDB-407010

CPE

listo

EPSS

0.00189

KEV

no

Actividades

muy bajo

Fuentes

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!