CVE-2026-74482 in Linuxinformación

Resumen

por VulDB • 2026-08-15

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

mm/huge_memory: desbloquear i_mmap_rwsem antes de liberar los folios posteriores al split (desdoblamiento)

__folio_split() sigue realizando dereferencias del mapeo tras el split: shmem_uncharge(mapping->host) y remap_page() mientras los folios siguen estando congelados/bloqueados, e i_mmap_unlock_read(mapping) al final absoluto, después de que los folios posteriores al split hayan sido desbloqueados y liberados.

Nada mantiene una referencia al inode durante ese periodo. El split depende de @folio -- el cual nunca se elimina en el bucle de caída más allá del EOF (End Of File), ya que comienza con folio_next(folio) -- manteniéndose bloqueado y en la página caché para evitar su eliminación (eviction). Sin embargo, el bucle de desbloqueo desbloquea @folio antes de que se ejecute i_mmap_unlock_read(). Si @lock_at del llamante es una cola más allá del EOF, como ocurre cuando memory_failure() pasa al dividir una cola envenenada de un THP compartido (shmem) que supera i_size durante el truncamiento, también desaparece de la página caché; por lo tanto, una vez que @folio se desbloquea, ningún folio bloqueado y presente en la caché ancla el inode, y un iput() final concurrente puede eliminarlo y liberarlo mediante RCU antes de que i_mmap_unlock_read() acceda a i_mmap_rwsem:

BUG: KASAN: slab-use-after-free in __up_read+0x634/0x790 i_mmap_unlock_read include/linux/fs.h:537 [inline]
__folio_split+0x732/0x1640 mm/huge_memory.c:4100 try_to_split_thp_page+0xab/0x390 mm/memory-failure.c:1675 memory_failure+0x1394/0x26e0 mm/memory-failure.c:2470

Liberado por la tarea 4601: shmem_free_in_core_inode+0x54/0xb0 mm/shmem.c:5177 evict+0x57f/0xac0 fs/inode.c:870

Realice todas las dereferencias del mapeo mientras @folio aún ancla el inode: libere i_mmap_rwsem justo después de remap_page(), antes del bucle que desbloquea y libera los folios posteriores al split, y limpie @mapping para que la ruta de salida no lo desbloquee nuevamente. shmem_uncharge() y remap_page() ya se ejecutan antes de ese punto, por lo que tras este cambio nada más allá del bucle de desbloqueo accede al inode o al mapeo.

Esta es ahora una regla en la que depende el split, junto con mantener @folio congelado hasta que se actualice la página caché: ninguna dereferencia de inode o mapeo una vez que los folios posteriores al split comienzan a desbloquearse.

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

Responsable

Linux

Reservar

2026-08-15

Divulgación

2026-08-15

Moderación

aceptado

Artículo

VDB-390773

CPE

listo

EPSS

0.00000

KEV

no

Actividades

muy bajo

Fuentes

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!