continue;
 
                /*
-                * Split buddy pages returned by expand() are received here
-                * in physical page order. The page is added to the callers and
-                * list and the list head then moves forward. From the callers
-                * perspective, the linked list is ordered by page number in
-                * some conditions. This is useful for IO devices that can
-                * merge IO requests if the physical pages are ordered
-                * properly.
+                * Split buddy pages returned by expand() are received here in
+                * physical page order. The page is added to the tail of
+                * caller's list. From the callers perspective, the linked list
+                * is ordered by page number under some conditions. This is
+                * useful for IO devices that can forward direction from the
+                * head, thus also in the physical page order. This is useful
+                * for IO devices that can merge IO requests if the physical
+                * pages are ordered properly.
                 */
-               list_add(&page->lru, list);
-               list = &page->lru;
+               list_add_tail(&page->lru, list);
                alloced++;
                if (is_migrate_cma(get_pcppage_migratetype(page)))
                        __mod_zone_page_state(zone, NR_FREE_CMA_PAGES,