--- x/mm/filemap.c +++ y/mm/filemap.c @@ -3502,10 +3502,10 @@ static struct folio *next_uptodate_folio continue; if (xa_is_value(folio)) continue; - if (folio_test_locked(folio)) - continue; if (!folio_try_get(folio)) continue; + if (folio_test_locked(folio)) + goto skip; /* Has the page moved or been split? */ if (unlikely(folio != xas_reload(xas))) goto skip;