• Stephen Boyd's avatar
    arm64: print a fault message when attempting to write RO memory · b824b930
    Stephen Boyd authored
    If a page is marked read only we should print out that fact,
    instead of printing out that there was a page fault. Right now we
    get a cryptic error message that something went wrong with an
    unhandled fault, but we don't evaluate the esr to figure out that
    it was a read/write permission fault.
    
    Instead of seeing:
    
      Unable to handle kernel paging request at virtual address ffff000008e460d8
      pgd = ffff800003504000
      [ffff000008e460d8] *pgd=0000000083473003, *pud=0000000083503003, *pmd=0000000000000000
      Internal error: Oops: 9600004f [#1] PREEMPT SMP
    
    we'll see:
    
      Unable to handle kernel write to read-only memory at virtual address ffff000008e760d8
      pgd = ffff80003d3de000
      [ffff000008e760d8] *pgd=0000000083472003, *pud=0000000083435003, *pmd=0000000000000000
      Internal error: Oops: 9600004f [#1] PREEMPT SMP
    
    We also add a userspace address check into is_permission_fault()
    so that the function doesn't return true for ttbr0 PAN faults
    when it shouldn't.
    Reviewed-by: default avatarJames Morse <james.morse@arm.com>
    Tested-by: default avatarJames Morse <james.morse@arm.com>
    Acked-by: default avatarLaura Abbott <labbott@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: default avatarStephen Boyd <stephen.boyd@linaro.org>
    Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    b824b930
fault.c 19.7 KB