aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
Diffstat (limited to 'mm')
-rw-r--r--mm/page_alloc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 6aa0a8e89c5d..94fd283dde98 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -729,6 +729,7 @@ static void __free_pages_ok(struct page *page, unsigned int order)
729{ 729{
730 unsigned long flags; 730 unsigned long flags;
731 int wasMlocked = __TestClearPageMlocked(page); 731 int wasMlocked = __TestClearPageMlocked(page);
732 int migratetype;
732 733
733 if (!free_pages_prepare(page, order)) 734 if (!free_pages_prepare(page, order))
734 return; 735 return;
@@ -737,8 +738,9 @@ static void __free_pages_ok(struct page *page, unsigned int order)
737 if (unlikely(wasMlocked)) 738 if (unlikely(wasMlocked))
738 free_page_mlock(page); 739 free_page_mlock(page);
739 __count_vm_events(PGFREE, 1 << order); 740 __count_vm_events(PGFREE, 1 << order);
740 free_one_page(page_zone(page), page, order, 741 migratetype = get_pageblock_migratetype(page);
741 get_pageblock_migratetype(page)); 742 set_freepage_migratetype(page, migratetype);
743 free_one_page(page_zone(page), page, order, migratetype);
742 local_irq_restore(flags); 744 local_irq_restore(flags);
743} 745}
744 746
@@ -959,6 +961,7 @@ static int move_freepages(struct zone *zone,
959 order = page_order(page); 961 order = page_order(page);
960 list_move(&page->lru, 962 list_move(&page->lru,
961 &zone->free_area[order].free_list[migratetype]); 963 &zone->free_area[order].free_list[migratetype]);
964 set_freepage_migratetype(page, migratetype);
962 page += 1 << order; 965 page += 1 << order;
963 pages_moved += 1 << order; 966 pages_moved += 1 << order;
964 } 967 }