diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c index 9a0a42a4f08d..c05d9dcf7891 100644 --- a/mm/debug_vm_pgtable.c +++ b/mm/debug_vm_pgtable.c @@ -943,7 +943,13 @@ static int __init debug_vm_pgtable(void) p4dp = p4d_alloc(mm, pgdp, vaddr); pudp = pud_alloc(mm, p4dp, vaddr); pmdp = pmd_alloc(mm, pudp, vaddr); - ptep = pte_alloc_map(mm, pmdp, vaddr); + /* + * Allocate pgtable_t + */ + if (pte_alloc(mm, pmdp)) { + pr_err("pgtable allocation failed\n"); + return 1; + } /* * Save all the page table page addresses as the page table @@ -997,8 +1003,7 @@ static int __init debug_vm_pgtable(void) * proper page table lock. */ - ptl = pte_lockptr(mm, pmdp); - spin_lock(ptl); + ptep = pte_offset_map_lock(mm, pmdp, vaddr, &ptl); pte_clear_tests(mm, ptep, pte_aligned, vaddr, prot); pte_advanced_tests(mm, vma, ptep, pte_aligned, vaddr, prot); pte_unmap_unlock(ptep, ptl);