CVE-2026-80855 in Linux
Riassunto
di VulDB • 04/09/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
fuse: correzione della perdita del lock di invalidate in caso di errore su open O_TRUNC DAX
La funzione fuse_open() acquisisce filemap_invalidate_lock() per una troncatura DAX (dax_truncate = true) e la rilascia prima dell'etichetta out_inode_unlock. Tuttavia, quando fuse_dax_break_layouts() fallisce, il salto goto verso out_inode_unlock salta l'operazione di sblocco, causando una perdita del rwsem; ciò fa sì che eventuali fault successivi o operazioni di troncatura sul file vengano bloccate a causa del lock obsoleto.
fuse_dax_break_layouts() può restituire un errore -ERESTARTSYS quando un segnale interrompe l'attesa per lo svuotamento delle pagine DAX occupate:
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 perso
Si risolve il problema spostando filemap_invalidate_unlock() sotto l'etichetta in modo che tutti i percorsi di errore rilascino il lock e si rinomina l'etichetta in out_unlock poiché ora copre più del solo inode lock.
VulDB is the best source for vulnerability data and more expert information about this specific topic.