diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 9bfb781fafd3f389cd5d8d418d12e5dfea1f5cb0..03eca3aec0f6edf52b2b47c1d9538f32e7b2ed97 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -2641,11 +2641,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 */ }