diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 5b0d2264b99ba667f5ed8ae7840a5134fd726534..72e16b7584716f39ff25e7d411331c283949bbd0 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -2572,11 +2572,11 @@ struct page *alloc_huge_page(struct vm_area_struct *vma, page = alloc_buddy_huge_page_with_mpol(h, vma, addr); if (!page) goto out_uncharge_cgroup; + spin_lock_irq(&hugetlb_lock); if (!avoid_reserve && vma_has_reserves(vma, gbl_chg)) { SetHPageRestoreReserve(page); h->resv_huge_pages--; } - spin_lock_irq(&hugetlb_lock); list_add(&page->lru, &h->hugepage_activelist); /* Fall through */ }