diff options
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 4e9f5cc5fb59..8deb9d0fd5b1 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -556,8 +556,9 @@ static void free_pcppages_bulk(struct zone *zone, int count, | |||
556 | page = list_entry(list->prev, struct page, lru); | 556 | page = list_entry(list->prev, struct page, lru); |
557 | /* must delete as __free_one_page list manipulates */ | 557 | /* must delete as __free_one_page list manipulates */ |
558 | list_del(&page->lru); | 558 | list_del(&page->lru); |
559 | __free_one_page(page, zone, 0, migratetype); | 559 | /* MIGRATE_MOVABLE list may include MIGRATE_RESERVEs */ |
560 | trace_mm_page_pcpu_drain(page, 0, migratetype); | 560 | __free_one_page(page, zone, 0, page_private(page)); |
561 | trace_mm_page_pcpu_drain(page, 0, page_private(page)); | ||
561 | } while (--count && --batch_free && !list_empty(list)); | 562 | } while (--count && --batch_free && !list_empty(list)); |
562 | } | 563 | } |
563 | spin_unlock(&zone->lock); | 564 | spin_unlock(&zone->lock); |
@@ -1222,10 +1223,10 @@ again: | |||
1222 | } | 1223 | } |
1223 | spin_lock_irqsave(&zone->lock, flags); | 1224 | spin_lock_irqsave(&zone->lock, flags); |
1224 | page = __rmqueue(zone, order, migratetype); | 1225 | page = __rmqueue(zone, order, migratetype); |
1225 | __mod_zone_page_state(zone, NR_FREE_PAGES, -(1 << order)); | ||
1226 | spin_unlock(&zone->lock); | 1226 | spin_unlock(&zone->lock); |
1227 | if (!page) | 1227 | if (!page) |
1228 | goto failed; | 1228 | goto failed; |
1229 | __mod_zone_page_state(zone, NR_FREE_PAGES, -(1 << order)); | ||
1229 | } | 1230 | } |
1230 | 1231 | ||
1231 | __count_zone_vm_events(PGALLOC, zone, 1 << order); | 1232 | __count_zone_vm_events(PGALLOC, zone, 1 << order); |
@@ -3998,7 +3999,7 @@ void __init add_active_range(unsigned int nid, unsigned long start_pfn, | |||
3998 | } | 3999 | } |
3999 | 4000 | ||
4000 | /* Merge backward if suitable */ | 4001 | /* Merge backward if suitable */ |
4001 | if (start_pfn < early_node_map[i].end_pfn && | 4002 | if (start_pfn < early_node_map[i].start_pfn && |
4002 | end_pfn >= early_node_map[i].start_pfn) { | 4003 | end_pfn >= early_node_map[i].start_pfn) { |
4003 | early_node_map[i].start_pfn = start_pfn; | 4004 | early_node_map[i].start_pfn = start_pfn; |
4004 | return; | 4005 | return; |