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