CVE-2025-68821: fuse: fix readahead reclaim deadlock
In the Linux kernel, the following vulnerability has been resolved:
fuse: fix readahead reclaim deadlock
Commit e26ee4efbc79 ("fuse: allocate ff->releaseargs only if release is needed") skips allocating ff->releaseargs if the server does not implement open. However in doing so, fusepreparerelease() 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 fuseevictinode() attempts to remove all folios associated with the inode from the page cache (truncateinodepagesrange()), reclaim will block forever waiting for the lock since readahead cannot relinquish the lock because it is itself blocked in reclaim:
>> stacktrace(1504735) foliowaitbitcommon (mm/filemap.c:1308:4) foliolock (./include/linux/pagemap.h:1052:3) truncateinodepagesrange (mm/truncate.c:336:10) fuseevictinode (fs/fuse/inode.c:161:2) evict (fs/inode.c:704:3) dentryunlinkinode (fs/dcache.c:412:3) dentrykill (fs/dcache.c:615:3) shrinkkill (fs/dcache.c:1060:12) shrinkdentrylist (fs/dcache.c:1087:3) prunedcachesb (fs/dcache.c:1168:2) supercachescan (fs/super.c:221:10) doshrinkslab (mm/shrinker.c:435:9) shrinkslab (mm/shrinker.c:626:10) shrinknode (mm/vmscan.c:5951:2) shrinkzones (mm/vmscan.c:6195:3) dotrytofreepages (mm/vmscan.c:6257:3) doswappage (mm/memory.c:4136:11) handleptefault (mm/memory.c:5562:10) handlemmfault (mm/memory.c:5870:9) douseraddrfault (arch/x86/mm/fault.c:1338:10) handlepagefault (arch/x86/mm/fault.c:1481:3) excpagefault (arch/x86/mm/fault.c:1539:2) asmexcpagefault+0x22/0x27
Fix this deadlock by allocating ff->releaseargs 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 fusefileput() -> fusereleaseend()).
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
debian/linuxto a version that resolves this vulnerability.Fixed in 6.1.176-1Fixed in 6.1.190-1Fixed in 6.12.107-1Fixed in 6.12.113-1Fixed in 7.2.12-1Fixed in 7.2.13-1
Event History
Frequently Asked Questions
What is the severity of CVE-2025-68821?
CVE-2025-68821 has been classified with a severity level that requires immediate attention due to its potential impact on the Linux kernel.
How do I fix CVE-2025-68821?
To fix CVE-2025-68821, you should update your Linux kernel to the latest version where this vulnerability has been patched.
What systems are affected by CVE-2025-68821?
CVE-2025-68821 specifically affects the Linux kernel implementations that utilize the FUSE file system.
What are the potential impacts of CVE-2025-68821?
The potential impacts of CVE-2025-68821 include system instability and deadlocks during file operations in the FUSE environment.
Is CVE-2025-68821 actively being exploited?
As of the latest information, there is no evidence that CVE-2025-68821 is being actively exploited in the wild.