arm64: print additional fault message when executing non-exec memory
authorXiang Zheng <zhengxiang9@huawei.com>
Tue, 29 Oct 2019 12:41:31 +0000 (20:41 +0800)
committerCatalin Marinas <catalin.marinas@arm.com>
Tue, 29 Oct 2019 15:41:14 +0000 (15:41 +0000)
When attempting to executing non-executable memory, the fault message
shows:

  Unable to handle kernel read from unreadable memory at virtual address
  ffff802dac469000

This may confuse someone, so add a new fault message for instruction
abort.

Acked-by: Will Deacon <will@kernel.org>
Signed-off-by: Xiang Zheng <zhengxiang9@huawei.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/mm/fault.c

index 855f2a7..d46a2bb 100644 (file)
@@ -314,6 +314,8 @@ static void __do_kernel_fault(unsigned long addr, unsigned int esr,
        if (is_el1_permission_fault(addr, esr, regs)) {
                if (esr & ESR_ELx_WNR)
                        msg = "write to read-only memory";
+               else if (is_el1_instruction_abort(esr))
+                       msg = "execute from non-executable memory";
                else
                        msg = "read from unreadable memory";
        } else if (addr < PAGE_SIZE) {