Skip to content
  • Mark Rutland's avatar
    arm64: mm: dump: don't skip final region · fb59d007
    Mark Rutland authored
    
    
    If the final page table entry we walk is a valid mapping, the page table
    dumping code will not log the region this entry is part of, as the final
    note_page call in ptdump_show will trigger an early return. Luckily this
    isn't seen on contemporary systems as they typically don't have enough
    RAM to extend the linear mapping right to the end of the address space.
    
    In note_page, we log a region  when we reach its end (i.e. we hit an
    entry immediately afterwards which has different prot bits or is
    invalid). The final entry has no subsequent entry, so we will not log
    this immediately. We try to cater for this with a subsequent call to
    note_page in ptdump_show, but this returns early as 0 < LOWEST_ADDR, and
    hence we will skip a valid mapping if it spans to the final entry we
    note.
    
    Unlike 32-bit ARM, the pgd with the kernel mapping is never shared with
    user mappings, so we do not need the check to ensure we don't log user
    page tables. Due to the way addr is constructed in the walk_* functions,
    it can never be less than LOWEST_ADDR when walking the page tables, so
    it is not necessary to avoid dereferencing invalid table addresses. The
    existing checks for st->current_prot and st->marker[1].start_address are
    sufficient to ensure we will not print and/or dereference garbage when
    trying to log information.
    
    This patch removes the unnecessary check against LOWEST_ADDR, ensuring
    we log all regions in the kernel page table, including those which span
    right to the end of the address space.
    
    Cc: Kees Cook <keescook@chromium.org>
    Acked-by: default avatarLaura Abbott <lauraa@codeaurora.org>
    Acked-by: default avatarSteve Capper <steve.capper@linaro.org>
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    fb59d007