diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c index 38b8994bc1b2..914a0966a1c5 100644 --- a/fs/f2fs/inode.c +++ b/fs/f2fs/inode.c @@ -1001,6 +1001,13 @@ void f2fs_evict_inode(struct inode *inode) out_clear: fscrypt_put_encryption_info(inode); fsverity_cleanup_inode(inode); + /* + * Pages in inode's data mapping may have been re-added during + * eviction, e.g. by f2fs_convert_inline_inode() called from + * f2fs_truncate(). Truncate them again before clear_inode() + * which expects nrpages == 0. + */ + truncate_inode_pages_final(&inode->i_data); clear_inode(inode); }