Skip to content
  • Mark Rutland's avatar
    arm64: mm: use *_sect to check for section maps · a1c76574
    Mark Rutland authored
    
    
    The {pgd,pud,pmd}_bad family of macros have slightly fuzzy
    cross-architecture semantics, and seem to imply a populated entry that
    is not a next-level table, rather than a particular type of entry (e.g.
    a section map).
    
    In arm64 code, for those cases where we care about whether an entry is a
    section mapping, we can instead use the {pud,pmd}_sect macros to
    explicitly check for this case. This helps to document precisely what we
    care about, making the code easier to read, and allows for future
    relaxation of the *_bad macros to check for other "bad" entries.
    
    To that end this patch updates the table dumping and initial table setup
    to check for section mappings with {pud,pmd}_sect, and adds/restores
    BUG_ON(*_bad((*p)) checks after we've handled the *_sect and *_none
    cases so as to catch remaining "bad" cases.
    
    In the fault handling code, show_pte is left with *_bad checks as it
    only cares about whether it can walk the next level table, and this path
    is used for both kernel and userspace fault handling. The former case
    will be followed by a die() where we'll report the address that
    triggered the fault, which can be useful context for debugging.
    
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Acked-by: default avatarSteve Capper <steve.capper@linaro.org>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Laura Abbott <lauraa@codeaurora.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    a1c76574