]> git.ipfire.org Git - thirdparty/linux.git/blobdiff - mm/ptdump.c
mm: sparsemem: use page table lock to protect kernel pmd operations
[thirdparty/linux.git] / mm / ptdump.c
index da751448d0e4ef219717294882df9bfb33a66174..eea3d28d173c26b5b63f8e1340f8c0df2e417ce2 100644 (file)
@@ -40,8 +40,10 @@ static int ptdump_pgd_entry(pgd_t *pgd, unsigned long addr,
        if (st->effective_prot)
                st->effective_prot(st, 0, pgd_val(val));
 
-       if (pgd_leaf(val))
+       if (pgd_leaf(val)) {
                st->note_page(st, addr, 0, pgd_val(val));
+               walk->action = ACTION_CONTINUE;
+       }
 
        return 0;
 }
@@ -61,8 +63,10 @@ static int ptdump_p4d_entry(p4d_t *p4d, unsigned long addr,
        if (st->effective_prot)
                st->effective_prot(st, 1, p4d_val(val));
 
-       if (p4d_leaf(val))
+       if (p4d_leaf(val)) {
                st->note_page(st, addr, 1, p4d_val(val));
+               walk->action = ACTION_CONTINUE;
+       }
 
        return 0;
 }
@@ -82,8 +86,10 @@ static int ptdump_pud_entry(pud_t *pud, unsigned long addr,
        if (st->effective_prot)
                st->effective_prot(st, 2, pud_val(val));
 
-       if (pud_leaf(val))
+       if (pud_leaf(val)) {
                st->note_page(st, addr, 2, pud_val(val));
+               walk->action = ACTION_CONTINUE;
+       }
 
        return 0;
 }
@@ -101,8 +107,10 @@ static int ptdump_pmd_entry(pmd_t *pmd, unsigned long addr,
 
        if (st->effective_prot)
                st->effective_prot(st, 3, pmd_val(val));
-       if (pmd_leaf(val))
+       if (pmd_leaf(val)) {
                st->note_page(st, addr, 3, pmd_val(val));
+               walk->action = ACTION_CONTINUE;
+       }
 
        return 0;
 }