summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mm/page_alloc.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 9bc83d70425b..45b3d6bcd30f 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -336,21 +336,17 @@ static void prep_new_page(struct page *page, int order)
static struct page *__rmqueue(struct zone *zone, unsigned int order)
{
struct free_area * area;
- unsigned int current_order = order;
- struct list_head *head, *curr;
+ unsigned int current_order;
struct page *page;
unsigned int index;
- for (current_order=order; current_order < MAX_ORDER; ++current_order) {
+ for (current_order = order; current_order < MAX_ORDER; ++current_order) {
area = zone->free_area + current_order;
- head = &area->free_list;
- curr = head->next;
-
if (list_empty(&area->free_list))
continue;
- page = list_entry(curr, struct page, list);
- list_del(curr);
+ page = list_entry(area->free_list.next, struct page, list);
+ list_del(&page->list);
index = page - zone->zone_mem_map;
if (current_order != MAX_ORDER-1)
MARK_USED(index, current_order, area);