arm64: Add trampoline code for kretprobes
authorWilliam Cohen <wcohen@redhat.com>
Fri, 8 Jul 2016 16:35:52 +0000 (12:35 -0400)
committerAlex Shi <alex.shi@linaro.org>
Thu, 20 Oct 2016 07:38:13 +0000 (15:38 +0800)
commitaecc244b48b51e2ce0f1fefd3111ba6d6548d0ce
treecb9d3864f6b3ae52cbf61659209651a4c1bf20eb
parent1f4a59d0e95a8b5a1a3e35080b4e6b579d6b2f52
arm64: Add trampoline code for kretprobes

commit da6a91252ad98d49b49e83b76c1f032cdf6e5258 upstream.

The trampoline code is used by kretprobes to capture a return from a probed
function.  This is done by saving the registers, calling the handler, and
restoring the registers. The code then returns to the original saved caller
return address. It is necessary to do this directly instead of using a
software breakpoint because the code used in processing that breakpoint
could itself be kprobe'd and cause a problematic reentry into the debug
exception handler.

Signed-off-by: William Cohen <wcohen@redhat.com>
Signed-off-by: David A. Long <dave.long@linaro.org>
Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
[catalin.marinas@arm.com: removed unnecessary masking of the PSTATE bits]
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/include/asm/kprobes.h
arch/arm64/kernel/asm-offsets.c
arch/arm64/kernel/probes/Makefile
arch/arm64/kernel/probes/kprobes.c
arch/arm64/kernel/probes/kprobes_trampoline.S [new file with mode: 0644]