kprobes: Add a test case for stacktrace from kretprobe handler
authorMasami Hiramatsu <mhiramat@kernel.org>
Mon, 25 Oct 2021 11:41:52 +0000 (20:41 +0900)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Tue, 26 Oct 2021 21:23:45 +0000 (17:23 -0400)
commit1f6d3a8f5e397f5d31afbc58d84e1dc68318b874
tree46b17896cd67cd289304b85424d91a05452855cc
parent4d1c92a4f5ad8454259cfc711c210da6d4cfe8cc
kprobes: Add a test case for stacktrace from kretprobe handler

Add a test case for stacktrace from kretprobe handler and
nested kretprobe handlers.

This test checks both of stack trace inside kretprobe handler
and stack trace from pt_regs. Those stack trace must include
actual function return address instead of kretprobe trampoline.
The nested kretprobe stacktrace test checks whether the unwinder
can correctly unwind the call frame on the stack which has been
modified by the kretprobe.

Since the stacktrace on kretprobe is correctly fixed only on x86,
this introduces a meta kconfig ARCH_CORRECT_STACKTRACE_ON_KRETPROBE
which tells user that the stacktrace on kretprobe is correct or not.

The test results will be shown like below;

 TAP version 14
 1..1
     # Subtest: kprobes_test
     1..6
     ok 1 - test_kprobe
     ok 2 - test_kprobes
     ok 3 - test_kretprobe
     ok 4 - test_kretprobes
     ok 5 - test_stacktrace_on_kretprobe
     ok 6 - test_stacktrace_on_nested_kretprobe
 # kprobes_test: pass:6 fail:0 skip:0 total:6
 # Totals: pass:6 fail:0 skip:0 total:6
 ok 1 - kprobes_test

Link: https://lkml.kernel.org/r/163516211244.604541.18350507860972214415.stgit@devnote2
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
arch/Kconfig
arch/x86/Kconfig
kernel/test_kprobes.c