CVE-2025-68821 in Linux
Riassunto
di VulDB • 22/06/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
fuse: risoluzione del deadlock di reclaim durante il readahead
Il commit e26ee4efbc79 ("fuse: allocate ff->release_args only if release is needed") evita l'allocazione di `ff->release_args` se il server non implementa open. Tuttavia, facendo ciò, `fuse_prepare_release()` salta ora l'acquisizione del riferimento sull'inode, rendendo possibile che un inode venga rimosso dalla dcache mentre sono presenti richieste readahead in corso (inflight). Ciò causa un deadlock se il server attiva la reclaim durante il servizio della richiesta readahead e tale operazione tenta di rimuovere dall cache l'inode del file oggetto di readahead. Poiché il folio è bloccato durante il readahead, quando la reclaim rimuove l'inode fuse e `fuse_evict_inode()` tenta di rimuovere tutti i folio associati all'inode dalla page cache (`truncate_inode_pages_range()`), la reclaim bloccherà indefinitamente in attesa del lock poiché il readahead non può rilasciare il blocco essendo esso stesso bloccato nella reclaim:
>>> stack_trace(1504735) folio_wait_bit_common (mm/filemap.c:1308:4) folio_lock (./include/linux/pagemap.h:1052:3) truncate_inode_pages_range (mm/truncate.c:336:10) fuse_evict_inode (fs/fuse/inode.c:161:2) evict (fs/inode.c:704:3) dentry_unlink_inode (fs/dcache.c:412:3) __dentry_kill (fs/dcache.c:615:3) shrink_kill (fs/dcache.c:1060:12) shrink_dentry_list (fs/dcache.c:1087:3) prune_dcache_sb (fs/dcache.c:1168:2) super_cache_scan (fs/super.c:221:10) do_shrink_slab (mm/shrinker.c:435:9) shrink_slab (mm/shrinker.c:626:10) shrink_node (mm/vmscan.c:5951:2) shrink_zones (mm/vmscan.c:6195:3) do_try_to_free_pages (mm/vmscan.c:6257:3) do_swap_page (mm/memory.c:4136:11) handle_pte_fault (mm/memory.c:5562:10) handle_mm_fault (mm/memory.c:5870:9) do_user_addr_fault (arch/x86/mm/fault.c:1338:10) handle_page_fault (arch/x86/mm/fault.c:1481:3) exc_page_fault (arch/x86/mm/fault.c:1539:2) asm_exc_page_fault+0x22/0x27
Risolvere questo deadlock allocando `ff->release_args` e acquisendo il riferimento sull'inode quando si prepara il file per la chiusura, anche se il server non implementa open. Il riferimento all'inode verrà rilasciato quando viene rilasciato l'ultimo riferimento sul file fuse (vedere `fuse_file_put()` -> `fuse_release_end()`).
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.