diff --git a/mm/filemap.c b/mm/filemap.c
index a34abfe8c65430fbded2473544ef4fffee322dd0..b4c9bd368b7e58cb904ed1c23b0e734a1a548afd 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -3378,7 +3378,7 @@ vm_fault_t filemap_fault(struct vm_fault *vmf)
 	 * re-find the vma and come back and find our hopefully still populated
 	 * page.
 	 */
-	if (folio)
+	if (!IS_ERR(folio))
 		folio_put(folio);
 	if (mapping_locked)
 		filemap_invalidate_unlock_shared(mapping);