aboutsummaryrefslogtreecommitdiffstats
path: root/mm/page_alloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r--mm/page_alloc.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 379618747deb..925b0b985f79 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -447,8 +447,7 @@ void __free_pages_ok(struct page *page, unsigned int order)
447 * 447 *
448 * -- wli 448 * -- wli
449 */ 449 */
450static inline struct page * 450static inline void expand(struct zone *zone, struct page *page,
451expand(struct zone *zone, struct page *page,
452 int low, int high, struct free_area *area) 451 int low, int high, struct free_area *area)
453{ 452{
454 unsigned long size = 1 << high; 453 unsigned long size = 1 << high;
@@ -462,7 +461,6 @@ expand(struct zone *zone, struct page *page,
462 area->nr_free++; 461 area->nr_free++;
463 set_page_order(&page[size], high); 462 set_page_order(&page[size], high);
464 } 463 }
465 return page;
466} 464}
467 465
468/* 466/*
@@ -522,7 +520,8 @@ static struct page *__rmqueue(struct zone *zone, unsigned int order)
522 rmv_page_order(page); 520 rmv_page_order(page);
523 area->nr_free--; 521 area->nr_free--;
524 zone->free_pages -= 1UL << order; 522 zone->free_pages -= 1UL << order;
525 return expand(zone, page, order, current_order, area); 523 expand(zone, page, order, current_order, area);
524 return page;
526 } 525 }
527 526
528 return NULL; 527 return NULL;
@@ -537,19 +536,16 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order,
537 unsigned long count, struct list_head *list) 536 unsigned long count, struct list_head *list)
538{ 537{
539 int i; 538 int i;
540 int allocated = 0;
541 struct page *page;
542 539
543 spin_lock(&zone->lock); 540 spin_lock(&zone->lock);
544 for (i = 0; i < count; ++i) { 541 for (i = 0; i < count; ++i) {
545 page = __rmqueue(zone, order); 542 struct page *page = __rmqueue(zone, order);
546 if (page == NULL) 543 if (unlikely(page == NULL))
547 break; 544 break;
548 allocated++;
549 list_add_tail(&page->lru, list); 545 list_add_tail(&page->lru, list);
550 } 546 }
551 spin_unlock(&zone->lock); 547 spin_unlock(&zone->lock);
552 return allocated; 548 return i;
553} 549}
554 550
555#ifdef CONFIG_NUMA 551#ifdef CONFIG_NUMA