--- y/mm/filemap.c +++ x/mm/filemap.c @@ -1953,6 +1953,7 @@ repeat: goto no_page; if (fgp_flags & FGP_LOCK) { + VM_BUG_ON_FOLIO(!folio_contains(folio, index), folio); if (fgp_flags & FGP_NOWAIT) { if (!folio_trylock(folio)) { folio_put(folio); @@ -1963,7 +1964,7 @@ repeat: } /* Has the page been truncated? */ - if (unlikely(folio->mapping != mapping)) { + if (unlikely(folio->mapping != mapping || !folio_contains(folio, index))) { folio_unlock(folio); folio_put(folio); goto repeat;