aboutsummaryrefslogtreecommitdiffstats
path: root/mm/hugetlb.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/hugetlb.c')
-rw-r--r--mm/hugetlb.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 388c2bb9b55c..c1f3c0be150a 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -1030,6 +1030,7 @@ static void destroy_compound_gigantic_page(struct page *page,
1030 int nr_pages = 1 << order; 1030 int nr_pages = 1 << order;
1031 struct page *p = page + 1; 1031 struct page *p = page + 1;
1032 1032
1033 atomic_set(compound_mapcount_ptr(page), 0);
1033 for (i = 1; i < nr_pages; i++, p = mem_map_next(p, page, i)) { 1034 for (i = 1; i < nr_pages; i++, p = mem_map_next(p, page, i)) {
1034 clear_compound_head(p); 1035 clear_compound_head(p);
1035 set_page_refcounted(p); 1036 set_page_refcounted(p);
@@ -4228,7 +4229,6 @@ pte_t *huge_pmd_share(struct mm_struct *mm, unsigned long addr, pud_t *pud)
4228 if (saddr) { 4229 if (saddr) {
4229 spte = huge_pte_offset(svma->vm_mm, saddr); 4230 spte = huge_pte_offset(svma->vm_mm, saddr);
4230 if (spte) { 4231 if (spte) {
4231 mm_inc_nr_pmds(mm);
4232 get_page(virt_to_page(spte)); 4232 get_page(virt_to_page(spte));
4233 break; 4233 break;
4234 } 4234 }
@@ -4243,9 +4243,9 @@ pte_t *huge_pmd_share(struct mm_struct *mm, unsigned long addr, pud_t *pud)
4243 if (pud_none(*pud)) { 4243 if (pud_none(*pud)) {
4244 pud_populate(mm, pud, 4244 pud_populate(mm, pud,
4245 (pmd_t *)((unsigned long)spte & PAGE_MASK)); 4245 (pmd_t *)((unsigned long)spte & PAGE_MASK));
4246 mm_inc_nr_pmds(mm);
4246 } else { 4247 } else {
4247 put_page(virt_to_page(spte)); 4248 put_page(virt_to_page(spte));
4248 mm_inc_nr_pmds(mm);
4249 } 4249 }
4250 spin_unlock(ptl); 4250 spin_unlock(ptl);
4251out: 4251out: