On Sat, Mar 12, 2022 at 03:46:12PM +0800, Miaohe Lin wrote: > Since commit 042c4f32323b ("mm/truncate: Inline invalidate_complete_page() This commit ID does not exist in mainline (or in the latest mmotm?), so you can't use it in patch description. Could you update this part? Thanks, Naoya Horiguchi > into its one caller"), invalidate_inode_page() can invalidate the pages in > the swap cache because the check of page->mapping != mapping is removed. > But invalidate_inode_page() is not expected to deal with the pages in swap > cache. Also non-lru movable page can reach here too. They're not page cache > pages. Skip these pages by checking PageSwapCache and PageLRU. > > Signed-off-by: Miaohe Lin <linmiaohe@xxxxxxxxxx> > --- > mm/memory-failure.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/memory-failure.c b/mm/memory-failure.c > index dabecd87ad3f..2ff7dd2078c4 100644 > --- a/mm/memory-failure.c > +++ b/mm/memory-failure.c > @@ -2190,7 +2190,7 @@ static int __soft_offline_page(struct page *page) > return 0; > } > > - if (!PageHuge(page)) > + if (!PageHuge(page) && PageLRU(page) && !PageSwapCache(page)) > /* > * Try to invalidate first. This should work for > * non dirty unmapped page cache pages. > -- > 2.23.0