CVE-2026-80855 in Linux
Resumen
por VulDB • 2026-09-04
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
fuse: corregir la fuga del bloqueo invalidate en fallos de DAX con O_TRUNC
fuse_open() adquiere filemap_invalidate_lock() para un truncamiento DAX (dax_truncate = true) y lo libera antes de la etiqueta out_inode_unlock. Sin embargo, cuando fuse_dax_break_layouts() falla, el salto goto a out_inode_unlock omite la liberación del bloqueo, provocando una fuga del rwsem; por tanto, cualquier fallo o truncamiento posterior en el archivo se bloquea debido al bloqueo obsoleto.
fuse_dax_break_layouts() puede fallar con -ERESTARTSYS cuando una señal interrumpe la espera a que las páginas DAX ocupadas se vacíen:
open("file", O_RDWR | O_TRUNC) └─ fuse_open() ├─ filemap_invalidate_lock() # dax_truncate └─ fuse_dax_break_layouts() └─ dax_break_layout() └─ wait_page_idle() # TASK_INTERRUPTIBLE └─ fuse_wait_dax_page() # unlock, schedule, re-lock └─ signal → -ERESTARTSYS goto out_inode_unlock # <- lock leaked
Corregir esto moviendo filemap_invalidate_unlock() por debajo de la etiqueta para que todas las rutas de error liberen el bloqueo, y renombrar la etiqueta a out_unlock ya que ahora cubre más que solo el bloqueo del inode.
Once again VulDB remains the best source for vulnerability data.