Skip to content

Commit

Permalink
arm64: ptdump: Disregard unaddressable VA space
Browse files Browse the repository at this point in the history
Configurations built with support for 52-bit virtual addressing can also
run on CPUs that only support 48 bits of VA space, in which case only
that part of swapper_pg_dir that represents the 48-bit addressable
region is relevant, and everything else is ignored by the hardware.

Our software pagetable walker has little in the way of input address
validation, and so it will happily start a walk from an address that is
not representable by the number of paging levels that are actually
active, resulting in lots of bogus output from the page table dumper
unless we take care to start at a valid address.

So define the start address at runtime based on vabits_actual.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20240214122845.2033971-82-ardb+git@google.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
  • Loading branch information
Ard Biesheuvel authored and Catalin Marinas committed Feb 16, 2024
1 parent 0dd4f60 commit 16f2298
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions arch/arm64/mm/ptdump.c
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,6 @@ static void __init ptdump_initialize(void)

static struct ptdump_info kernel_ptdump_info __ro_after_init = {
.mm = &init_mm,
.base_addr = PAGE_OFFSET,
};

void ptdump_check_wx(void)
Expand All @@ -329,7 +328,7 @@ void ptdump_check_wx(void)
.ptdump = {
.note_page = note_page,
.range = (struct ptdump_range[]) {
{PAGE_OFFSET, ~0UL},
{_PAGE_OFFSET(vabits_actual), ~0UL},
{0, 0}
}
}
Expand Down Expand Up @@ -370,6 +369,7 @@ static int __init ptdump_init(void)
static struct addr_marker address_markers[ARRAY_SIZE(m)] __ro_after_init;

kernel_ptdump_info.markers = memcpy(address_markers, m, sizeof(m));
kernel_ptdump_info.base_addr = page_offset;

ptdump_initialize();
ptdump_debugfs_register(&kernel_ptdump_info, "kernel_page_tables");
Expand Down

0 comments on commit 16f2298

Please sign in to comment.