arm64: __show_regs: strip PAC from lr in printk
authorAmit Daniel Kachhap <amit.kachhap@arm.com>
Fri, 13 Mar 2020 09:05:00 +0000 (14:35 +0530)
committerCatalin Marinas <catalin.marinas@arm.com>
Wed, 18 Mar 2020 09:50:20 +0000 (09:50 +0000)
lr is printed with %pS which will try to find an entry in kallsyms.
After enabling pointer authentication, this match will fail due to
PAC present in the lr.

Strip PAC from the lr to display the correct symbol name.

Suggested-by: James Morse <james.morse@arm.com>
Signed-off-by: Amit Daniel Kachhap <amit.kachhap@arm.com>
Reviewed-by: Vincenzo Frascino <Vincenzo.Frascino@arm.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/kernel/process.c

index 7db0302bec008f19a52abbc3f4d1ea7fae37d1b1..cacae291ba2743f7162611ad241d50ae133972b9 100644 (file)
@@ -262,7 +262,7 @@ void __show_regs(struct pt_regs *regs)
 
        if (!user_mode(regs)) {
                printk("pc : %pS\n", (void *)regs->pc);
-               printk("lr : %pS\n", (void *)lr);
+               printk("lr : %pS\n", (void *)ptrauth_strip_insn_pac(lr));
        } else {
                printk("pc : %016llx\n", regs->pc);
                printk("lr : %016llx\n", lr);