diff --git a/mm/shmem.c b/mm/shmem.c
index d075dd2dcc484a57f298e8739257927bc9635fcc..42e5888bf84d8638dc19ce15ef0e81ed8291a910 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -1782,6 +1782,7 @@ static int shmem_swapin_folio(struct inode *inode, pgoff_t index,
 
 	if (shmem_should_replace_folio(folio, gfp)) {
 		error = shmem_replace_page(&page, gfp, info, index);
+		folio = page_folio(page);
 		if (error)
 			goto failed;
 	}