--- y/mm/filemap.c
+++ f/mm/filemap.c
@@ -3527,12 +3527,12 @@ filler:
 			return ERR_PTR(err);
 		}
 
-		folio_wait_locked(folio);
 		if (!folio_test_uptodate(folio)) {
 			folio_put(folio);
 			return ERR_PTR(-EIO);
 		}
 
+		folio_unlock(folio);
 		goto out;
 	}
 	if (folio_test_uptodate(folio))