mm/debug_vm_pgtable/locks: take correct page table lock
Make sure we call pte accessors with correct lock held. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Cc: Anshuman Khandual <anshuman.khandual@arm.com> Cc: Christophe Leroy <christophe.leroy@csgroup.eu> Cc: Michael Ellerman <mpe@ellerman.id.au> Link: https://lkml.kernel.org/r/20200902114222.181353-10-aneesh.kumar@linux.ibm.com Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
e8edf0adb9
commit
6f302e270c
|
@ -1033,30 +1033,39 @@ static int __init debug_vm_pgtable(void)
|
|||
|
||||
hugetlb_basic_tests(pte_aligned, prot);
|
||||
|
||||
pte_clear_tests(mm, ptep, vaddr);
|
||||
pmd_clear_tests(mm, pmdp);
|
||||
pud_clear_tests(mm, pudp);
|
||||
p4d_clear_tests(mm, p4dp);
|
||||
pgd_clear_tests(mm, pgdp);
|
||||
/*
|
||||
* Page table modifying tests. They need to hold
|
||||
* proper page table lock.
|
||||
*/
|
||||
|
||||
ptl = pte_lockptr(mm, pmdp);
|
||||
spin_lock(ptl);
|
||||
|
||||
pte_clear_tests(mm, ptep, vaddr);
|
||||
pte_advanced_tests(mm, vma, ptep, pte_aligned, vaddr, prot);
|
||||
pmd_advanced_tests(mm, vma, pmdp, pmd_aligned, vaddr, prot);
|
||||
pud_advanced_tests(mm, vma, pudp, pud_aligned, vaddr, prot);
|
||||
hugetlb_advanced_tests(mm, vma, ptep, pte_aligned, vaddr, prot);
|
||||
|
||||
|
||||
pmd_huge_tests(pmdp, pmd_aligned, prot);
|
||||
pud_huge_tests(pudp, pud_aligned, prot);
|
||||
|
||||
pte_unmap_unlock(ptep, ptl);
|
||||
|
||||
ptl = pmd_lock(mm, pmdp);
|
||||
pmd_clear_tests(mm, pmdp);
|
||||
pmd_advanced_tests(mm, vma, pmdp, pmd_aligned, vaddr, prot);
|
||||
pmd_huge_tests(pmdp, pmd_aligned, prot);
|
||||
pmd_populate_tests(mm, pmdp, saved_ptep);
|
||||
spin_unlock(ptl);
|
||||
|
||||
ptl = pud_lock(mm, pudp);
|
||||
pud_clear_tests(mm, pudp);
|
||||
pud_advanced_tests(mm, vma, pudp, pud_aligned, vaddr, prot);
|
||||
pud_huge_tests(pudp, pud_aligned, prot);
|
||||
pud_populate_tests(mm, pudp, saved_pmdp);
|
||||
spin_unlock(ptl);
|
||||
|
||||
hugetlb_advanced_tests(mm, vma, ptep, pte_aligned, vaddr, prot);
|
||||
|
||||
spin_lock(&mm->page_table_lock);
|
||||
p4d_clear_tests(mm, p4dp);
|
||||
pgd_clear_tests(mm, pgdp);
|
||||
p4d_populate_tests(mm, p4dp, saved_pudp);
|
||||
pgd_populate_tests(mm, pgdp, saved_p4dp);
|
||||
spin_unlock(&mm->page_table_lock);
|
||||
|
||||
p4d_free(mm, saved_p4dp);
|
||||
pud_free(mm, saved_pudp);
|
||||
|
|
Loading…
Reference in New Issue