From 4637b4cdd7aebfa2e38fa39f4db91fa089b809c5 Mon Sep 17 00:00:00 2001 From: Yang Wen Date: Wed, 25 Feb 2026 22:59:42 +0800 Subject: exfat: use truncate_inode_pages_final() at evict_inode() Currently, exfat uses truncate_inode_pages() in exfat_evict_inode(). However, truncate_inode_pages() does not mark the mapping as exiting, so reclaim may still install shadow entries for the mapping until the inode teardown completes. In older kernels like Linux 5.10, if shadow entries are present at that point,clear_inode() can hit BUG_ON(inode->i_data.nrexceptional); To align with VFS eviction semantics and prevent this situation, switch to truncate_inode_pages_final() in ->evict_inode(). Other filesystems were updated to use truncate_inode_pages_final() in ->evict_inode() by commit 91b0abe36a7b ("mm + fs: store shadow entries in page cache")'. Signed-off-by: Yang Wen Signed-off-by: Namjae Jeon --- fs/exfat/inode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/exfat/inode.c b/fs/exfat/inode.c index 2fb2d2d5d503..567308aff726 100644 --- a/fs/exfat/inode.c +++ b/fs/exfat/inode.c @@ -686,7 +686,7 @@ out: void exfat_evict_inode(struct inode *inode) { - truncate_inode_pages(&inode->i_data, 0); + truncate_inode_pages_final(&inode->i_data); if (!inode->i_nlink) { i_size_write(inode, 0); -- cgit v1.2.3