diff --git a/mm/migrate.c b/mm/migrate.c
index 41f2154d66ad721b79c7f486dddd95772d51fecf..5d95e09b16187a8a3220b366c1c5e1b179897e89 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -1710,6 +1710,9 @@ static int migrate_pages_batch(struct list_head *from, new_page_t get_new_page,
 							large_retry++;
 							thp_retry += is_thp;
 							nr_retry_pages += nr_pages;
+							/* Undo duplicated failure counting. */
+							nr_large_failed--;
+							stats->nr_thp_failed -= is_thp;
 							break;
 						}
 					}