From 82c5dfb59992359457fe9bf1d4a1eb320f9e4db2 Mon Sep 17 00:00:00 2001 From: "Aneesh Kumar K.V" Date: Tue, 31 Jul 2012 16:42:32 -0700 Subject: [PATCH] --- yaml --- r: 320778 b: refs/heads/master c: 79dbb2368ae3515fad9c8b7c8f831cd86be59b1d h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/mm/hugetlb.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 7dd5c5f0f57c..a74cc1e0458e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 585e27ea6d2e71d0091443c39a00a35e6a5c5e8f +refs/heads/master: 79dbb2368ae3515fad9c8b7c8f831cd86be59b1d diff --git a/trunk/mm/hugetlb.c b/trunk/mm/hugetlb.c index c57740bb203a..ec7b86ebf9d9 100644 --- a/trunk/mm/hugetlb.c +++ b/trunk/mm/hugetlb.c @@ -928,8 +928,14 @@ struct page *alloc_huge_page_node(struct hstate *h, int nid) page = dequeue_huge_page_node(h, nid); spin_unlock(&hugetlb_lock); - if (!page) + if (!page) { page = alloc_buddy_huge_page(h, nid); + if (page) { + spin_lock(&hugetlb_lock); + list_move(&page->lru, &h->hugepage_activelist); + spin_unlock(&hugetlb_lock); + } + } return page; } @@ -1155,6 +1161,9 @@ static struct page *alloc_huge_page(struct vm_area_struct *vma, hugepage_subpool_put_pages(spool, chg); return ERR_PTR(-ENOSPC); } + spin_lock(&hugetlb_lock); + list_move(&page->lru, &h->hugepage_activelist); + spin_unlock(&hugetlb_lock); } set_page_private(page, (unsigned long)spool);