lock_page(page);
        rc = split_huge_page_to_list(page, split_pages);
        unlock_page(page);
+       if (!rc)
+               list_move_tail(&page->lru, split_pages);
 
        return rc;
 }
                thp_retry = 0;
 
                list_for_each_entry_safe(page, page2, from, lru) {
-retry:
                        /*
                         * THP statistics is based on the source huge page.
                         * Capture required information that might get lost
                         * retry on the same page with the THP split
                         * to base pages.
                         *
-                        * Head page is retried immediately and tail
-                        * pages are added to the tail of the list so
-                        * we encounter them after the rest of the list
-                        * is processed.
+                        * Sub-pages are put in thp_split_pages, and
+                        * we will migrate them after the rest of the
+                        * list is processed.
                         */
                        case -ENOSYS:
                                /* THP migration is unsupported */
                                        nr_thp_failed++;
                                        if (!try_split_thp(page, &thp_split_pages)) {
                                                nr_thp_split++;
-                                               goto retry;
+                                               break;
                                        }
                                /* Hugetlb migration is unsupported */
                                } else if (!no_subpage_counting) {
                                        /* THP NUMA faulting doesn't split THP to retry. */
                                        if (!nosplit && !try_split_thp(page, &thp_split_pages)) {
                                                nr_thp_split++;
-                                               goto retry;
+                                               break;
                                        }
                                } else if (!no_subpage_counting) {
                                        nr_failed++;