CVE-2025-68821
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
13/01/2026
Last modified:
19/01/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
fuse: fix readahead reclaim deadlock<br />
<br />
Commit e26ee4efbc79 ("fuse: allocate ff->release_args only if release is<br />
needed") skips allocating ff->release_args if the server does not<br />
implement open. However in doing so, fuse_prepare_release() now skips<br />
grabbing the reference on the inode, which makes it possible for an<br />
inode to be evicted from the dcache while there are inflight readahead<br />
requests. This causes a deadlock if the server triggers reclaim while<br />
servicing the readahead request and reclaim attempts to evict the inode<br />
of the file being read ahead. Since the folio is locked during<br />
readahead, when reclaim evicts the fuse inode and fuse_evict_inode()<br />
attempts to remove all folios associated with the inode from the page<br />
cache (truncate_inode_pages_range()), reclaim will block forever waiting<br />
for the lock since readahead cannot relinquish the lock because it is<br />
itself blocked in reclaim:<br />
<br />
>>> stack_trace(1504735)<br />
folio_wait_bit_common (mm/filemap.c:1308:4)<br />
folio_lock (./include/linux/pagemap.h:1052:3)<br />
truncate_inode_pages_range (mm/truncate.c:336:10)<br />
fuse_evict_inode (fs/fuse/inode.c:161:2)<br />
evict (fs/inode.c:704:3)<br />
dentry_unlink_inode (fs/dcache.c:412:3)<br />
__dentry_kill (fs/dcache.c:615:3)<br />
shrink_kill (fs/dcache.c:1060:12)<br />
shrink_dentry_list (fs/dcache.c:1087:3)<br />
prune_dcache_sb (fs/dcache.c:1168:2)<br />
super_cache_scan (fs/super.c:221:10)<br />
do_shrink_slab (mm/shrinker.c:435:9)<br />
shrink_slab (mm/shrinker.c:626:10)<br />
shrink_node (mm/vmscan.c:5951:2)<br />
shrink_zones (mm/vmscan.c:6195:3)<br />
do_try_to_free_pages (mm/vmscan.c:6257:3)<br />
do_swap_page (mm/memory.c:4136:11)<br />
handle_pte_fault (mm/memory.c:5562:10)<br />
handle_mm_fault (mm/memory.c:5870:9)<br />
do_user_addr_fault (arch/x86/mm/fault.c:1338:10)<br />
handle_page_fault (arch/x86/mm/fault.c:1481:3)<br />
exc_page_fault (arch/x86/mm/fault.c:1539:2)<br />
asm_exc_page_fault+0x22/0x27<br />
<br />
Fix this deadlock by allocating ff->release_args and grabbing the<br />
reference on the inode when preparing the file for release even if the<br />
server does not implement open. The inode reference will be dropped when<br />
the last reference on the fuse file is dropped (see fuse_file_put() -><br />
fuse_release_end()).
Impact
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/4703bc0e8cd3409acb1476a70cb5b7ff943cf39a
- https://git.kernel.org/stable/c/bd5603eaae0aabf527bfb3ce1bb07e979ce5bd50
- https://git.kernel.org/stable/c/cbbf3f1bb9f834bb2acbb61ddca74363456e19cd
- https://git.kernel.org/stable/c/cf74785c00b8b1c0c4a9dd74bfa9c22d62e2d99f
- https://git.kernel.org/stable/c/e0d6de83a4cc22bbac72713f3a58121af36cc411
- https://git.kernel.org/stable/c/fbba8b00bbe4e4f958a2b0654cc1219a7e6597f6



