CVE-2025-68821

fuse: fix readahead reclaim deadlock

published January 13, 2026

CVSS
—
EPSS
0%
Percentile
10.2
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

fuse: fix readahead reclaim deadlock

Commit e26ee4efbc79 ("fuse: allocate ff->release_args only if release is

needed") skips allocating ff->release_args if the server does not

implement open. However in doing so, fuse_prepare_release() now skips

grabbing the reference on the inode, which makes it possible for an

inode to be evicted from the dcache while there are inflight readahead

requests. This causes a deadlock if the server triggers reclaim while

servicing the readahead request and reclaim attempts to evict the inode

of the file being read ahead. Since the folio is locked during

readahead, when reclaim evicts the fuse inode and fuse_evict_inode()

attempts to remove all folios associated with the inode from the page

cache (truncate_inode_pages_range()), reclaim will block forever waiting

for the lock since readahead cannot relinquish the lock because it is

itself blocked in 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

Fix this deadlock by allocating ff->release_args and grabbing the

reference on the inode when preparing the file for release even if the

server does not implement open. The inode reference will be dropped when

the last reference on the fuse file is dropped (see fuse_file_put() ->

fuse_release_end()).

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00207 · 10.2th percentile
Published
2026-01-13T15:29Z
EPSS history
Timeline
  • 13 JAN 15:29Z
    fuse: fix readahead reclaim deadlock
    cvelistv5