signal/arm64: Add and use arm64_force_sig_ptrace_errno_trap
authorEric W. Biederman <ebiederm@xmission.com>
Sat, 22 Sep 2018 08:52:41 +0000 (10:52 +0200)
committerEric W. Biederman <ebiederm@xmission.com>
Thu, 27 Sep 2018 19:55:15 +0000 (21:55 +0200)
Add arm64_force_sig_ptrace_errno_trap for consistency with
arm64_force_sig_fault and use it where appropriate.

This adds the show_signal logic to the force_sig_errno_trap case,
where it was apparently overlooked earlier.

Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Tested-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
arch/arm64/include/asm/traps.h
arch/arm64/kernel/ptrace.c
arch/arm64/kernel/traps.c

index d32b8bd..f9c1aa6 100644 (file)
@@ -39,6 +39,7 @@ void force_signal_inject(int signal, int code, unsigned long address);
 void arm64_notify_segfault(unsigned long addr);
 void arm64_force_sig_fault(int signo, int code, void __user *addr, const char *str);
 void arm64_force_sig_mceerr(int code, void __user *addr, short lsb, const char *str);
+void arm64_force_sig_ptrace_errno_trap(int errno, void __user *addr, const char *str);
 
 /*
  * Move regs->pc to next instruction and do necessary setup before it
index 921267f..1710a2d 100644 (file)
@@ -202,7 +202,9 @@ static void ptrace_hbptriggered(struct perf_event *bp,
                                break;
                        }
                }
-               force_sig_ptrace_errno_trap(si_errno, (void __user *)bkpt->trigger);
+               arm64_force_sig_ptrace_errno_trap(si_errno,
+                                                 (void __user *)bkpt->trigger,
+                                                 desc);
        }
 #endif
        arm64_force_sig_fault(SIGTRAP, TRAP_HWBKPT,
index de67818..856b32a 100644 (file)
@@ -262,6 +262,13 @@ void arm64_force_sig_mceerr(int code, void __user *addr, short lsb,
        force_sig_mceerr(code, addr, lsb, current);
 }
 
+void arm64_force_sig_ptrace_errno_trap(int errno, void __user *addr,
+                                      const char *str)
+{
+       arm64_show_signal(SIGTRAP, str);
+       force_sig_ptrace_errno_trap(errno, addr);
+}
+
 void arm64_notify_die(const char *str, struct pt_regs *regs,
                      int signo, int sicode, void __user *addr,
                      int err)