selftests/ftrace: Add %return suffix tests
authorMasami Hiramatsu <mhiramat@kernel.org>
Thu, 10 Sep 2020 08:56:16 +0000 (17:56 +0900)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Tue, 22 Sep 2020 01:06:03 +0000 (21:06 -0400)
Add kprobe %return suffix testcase and syntax error tests
for %return suffix.

Link: https://lkml.kernel.org/r/159972817653.428528.9180599115849301184.stgit@devnote2
Acked-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
tools/testing/selftests/ftrace/test.d/kprobe/kprobe_syntax_errors.tc
tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_return_suffix.tc [new file with mode: 0644]
tools/testing/selftests/ftrace/test.d/kprobe/uprobe_syntax_errors.tc

index b4d8346..56b3f36 100644 (file)
@@ -97,4 +97,10 @@ check_error 'p:kprobes/testevent _do_fork ^abcd=\"foo"'      # DIFF_ARG_TYPE
 check_error '^p:kprobes/testevent _do_fork abcd=\1'    # SAME_PROBE
 fi
 
+# %return suffix errors
+if grep -q "place (kretprobe): .*%return.*" README; then
+check_error 'p vfs_read^%hoge'         # BAD_ADDR_SUFFIX
+check_error 'p ^vfs_read+10%return'    # BAD_RETPROBE
+fi
+
 exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_return_suffix.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_return_suffix.tc
new file mode 100644 (file)
index 0000000..f07bd15
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+# description: Kretprobe %%return suffix test
+# requires: kprobe_events '<symbol>[+<offset>]%return':README
+
+# Test for kretprobe by "r"
+echo 'r:myprobeaccept vfs_read' > kprobe_events
+RESULT1=`cat kprobe_events`
+
+# Test for kretprobe by "%return"
+echo 'p:myprobeaccept vfs_read%return' > kprobe_events
+RESULT2=`cat kprobe_events`
+
+if [ "$RESULT1" != "$RESULT2" ]; then
+       echo "Error: %return suffix didn't make a return probe."
+       echo "r-command: $RESULT1"
+       echo "%return: $RESULT2"
+       exit_fail
+fi
+
+echo > kprobe_events
index 7b5b60c..f5e3f9e 100644 (file)
@@ -17,4 +17,10 @@ check_error 'p /bin/sh:10(10)^a'     # BAD_REFCNT_SUFFIX
 check_error 'p /bin/sh:10 ^@+ab'       # BAD_FILE_OFFS
 check_error 'p /bin/sh:10 ^@symbol'    # SYM_ON_UPROBE
 
+# %return suffix error
+if grep -q "place (uprobe): .*%return.*" README; then
+check_error 'p /bin/sh:10^%hoge'       # BAD_ADDR_SUFFIX
+check_error 'p /bin/sh:10(10)^%return' # BAD_REFCNT_SUFFIX
+fi
+
 exit 0