diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index ac05e7ae399e555b9b42cdf8999ca4f042fff741..fbba675a0bd9e6f4337ab5e6eab46ba378f1e013 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1994,6 +1994,8 @@ int __isolate_free_page(struct page *page, unsigned int order)
 	zone->free_area[order].nr_free--;
 	rmv_page_order(page);
 
+	set_page_owner(page, order, 0);
+
 	/* Set the pageblock if the isolated page is at least a pageblock */
 	if (order >= pageblock_order - 1) {
 		struct page *endpage = page + (1 << order) - 1;
@@ -2005,7 +2007,7 @@ int __isolate_free_page(struct page *page, unsigned int order)
 		}
 	}
 
-	set_page_owner(page, order, 0);
+
 	return 1UL << order;
 }