]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - mm/hugetlb.c
mm: hugetlb: fix hugepage memory leak caused by wrong reserve count
[linux.git] / mm / hugetlb.c
index 827bb02a43a4e425393c296db89e7a49d6adf02b..4fe4340ed9b790ab134bb1deb5be578d7425828f 100644 (file)
@@ -1886,7 +1886,10 @@ 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;
-
+               if (!avoid_reserve && vma_has_reserves(vma, gbl_chg)) {
+                       SetPagePrivate(page);
+                       h->resv_huge_pages--;
+               }
                spin_lock(&hugetlb_lock);
                list_move(&page->lru, &h->hugepage_activelist);
                /* Fall through */