From f6a5ba08af230097e9d23b37424001c5b30182b7 Mon Sep 17 00:00:00 2001 From: Andi Kleen Date: Wed, 23 Jul 2008 21:27:40 -0700 Subject: [PATCH] --- yaml --- r: 105299 b: refs/heads/master c: b7ba30c679ed1eb7ed3ed8f281f6493282042bd4 h: refs/heads/master i: 105297: 71c1e62c81ba58f530703e0d0495aafd212b1d09 105295: ee2ad892377fe4ac758dfcb4c0d658ae1ea685ae v: v3 --- [refs] | 2 +- trunk/mm/hugetlb.c | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 0db323069071..b7336c7546cd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ff7ea79cf7c3a481851bd4b2185fdeb6ce4afa29 +refs/heads/master: b7ba30c679ed1eb7ed3ed8f281f6493282042bd4 diff --git a/trunk/mm/hugetlb.c b/trunk/mm/hugetlb.c index eda9642254a0..32dff4290c66 100644 --- a/trunk/mm/hugetlb.c +++ b/trunk/mm/hugetlb.c @@ -513,6 +513,16 @@ static int adjust_pool_surplus(int delta) return ret; } +static void prep_new_huge_page(struct page *page, int nid) +{ + set_compound_page_dtor(page, free_huge_page); + spin_lock(&hugetlb_lock); + nr_huge_pages++; + nr_huge_pages_node[nid]++; + spin_unlock(&hugetlb_lock); + put_page(page); /* free it into the hugepage allocator */ +} + static struct page *alloc_fresh_huge_page_node(int nid) { struct page *page; @@ -526,12 +536,7 @@ static struct page *alloc_fresh_huge_page_node(int nid) __free_pages(page, HUGETLB_PAGE_ORDER); return NULL; } - set_compound_page_dtor(page, free_huge_page); - spin_lock(&hugetlb_lock); - nr_huge_pages++; - nr_huge_pages_node[nid]++; - spin_unlock(&hugetlb_lock); - put_page(page); /* free it into the hugepage allocator */ + prep_new_huge_page(page, nid); } return page;