diff --git a/mm/truncate.c b/mm/truncate.c index 714eaf19821d..44ad7325f7e3 100644 --- a/mm/truncate.c +++ b/mm/truncate.c @@ -250,7 +250,9 @@ int invalidate_inode_page(struct page *page) return 0; if (PageDirty(page) || PageWriteback(page)) return 0; - if (page_mapped(page)) + /* The refcount will be elevated if any page in the folio is mapped */ + if (folio_ref_count(folio) > + folio_nr_pages(folio) + folio_has_private(folio) + 1) return 0; return invalidate_complete_page(mapping, page); }