arm64: ptdump: Don't override the level when operating on the stage-2 tables
authorSebastian Ene <sebastianene@google.com>
Mon, 9 Sep 2024 12:47:20 +0000 (12:47 +0000)
committerMarc Zyngier <maz@kernel.org>
Tue, 10 Sep 2024 20:32:51 +0000 (21:32 +0100)
Ptdump uses the init_mm structure directly to dump the kernel
pagetables. When ptdump is called on the stage-2 pagetables, this mm
argument is not used. Prevent the level from being overwritten by
checking the argument against NULL.

Signed-off-by: Sebastian Ene <sebastianene@google.com>
Acked-by: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20240909124721.1672199-5-sebastianene@google.com
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/mm/ptdump.c

index ca53ef2..264c5f9 100644 (file)
@@ -197,8 +197,8 @@ void note_page(struct ptdump_state *pt_st, unsigned long addr, int level,
        u64 prot = 0;
 
        /* check if the current level has been folded dynamically */
-       if ((level == 1 && mm_p4d_folded(st->mm)) ||
-           (level == 2 && mm_pud_folded(st->mm)))
+       if (st->mm && ((level == 1 && mm_p4d_folded(st->mm)) ||
+           (level == 2 && mm_pud_folded(st->mm))))
                level = 0;
 
        if (level >= 0)