File tree Expand file tree Collapse file tree 3 files changed +86
-0
lines changed
tools/testing/selftests/ftrace/test.d Expand file tree Collapse file tree 3 files changed +86
-0
lines changed Original file line number Diff line number Diff line change 1+ #! /bin/sh
2+ # SPDX-License-Identifier: GPL-2.0
3+ # description: Generic dynamic event - add/remove probes with BTF arguments
4+ # requires: dynamic_events "<argname>":README
5+
6+ KPROBES=
7+ FPROBES=
8+
9+ if grep -qF " p[:[<group>/][<event>]] <place> [<args>]" README ; then
10+ KPROBES=yes
11+ fi
12+ if grep -qF " f[:[<group>/][<event>]] <func-name>[%return] [<args>]" README ; then
13+ FPROBES=yes
14+ fi
15+
16+ if [ -z " $KPROBES " -a " $FPROBES " ] ; then
17+ exit_unsupported
18+ fi
19+
20+ echo 0 > events/enable
21+ echo > dynamic_events
22+
23+ TP=kfree
24+
25+ if [ " $FPROBES " ] ; then
26+ echo " f:fpevent $TP object" >> dynamic_events
27+ echo " t:tpevent $TP ptr" >> dynamic_events
28+
29+ grep -q " fpevent.*object=object" dynamic_events
30+ grep -q " tpevent.*ptr=ptr" dynamic_events
31+
32+ echo > dynamic_events
33+
34+ echo " f:fpevent $TP " ' $arg1' >> dynamic_events
35+ grep -q " fpevent.*object=object" dynamic_events
36+ echo > dynamic_events
37+
38+ echo " f:fpevent $TP " ' $arg*' >> dynamic_events
39+ echo " t:tpevent $TP " ' $arg*' >> dynamic_events
40+
41+ grep -q " fpevent.*object=object" dynamic_events
42+ grep -q " tpevent.*ptr=ptr" dynamic_events
43+ ! grep -q " tpevent.*_data" dynamic_events
44+ fi
45+
46+ echo > dynamic_events
47+
48+ if [ " $KPROBES " ] ; then
49+ echo " p:kpevent $TP object" >> dynamic_events
50+ grep -q " kpevent.*object=object" dynamic_events
51+
52+ echo > dynamic_events
53+
54+ echo " p:kpevent $TP " ' $arg*' >> dynamic_events
55+ grep -q " kpevent.*object=object" dynamic_events
56+ fi
57+
58+ clear_trace
Original file line number Diff line number Diff line change 9494# %return suffix errors
9595check_error ' f vfs_read^%hoge' # BAD_ADDR_SUFFIX
9696
97+ # BTF arguments errors
98+ if grep -q " <argname>" README; then
99+ check_error ' f vfs_read args=^$arg*' # BAD_VAR_ARGS
100+ check_error ' f vfs_read +0(^$arg*)' # BAD_VAR_ARGS
101+ check_error ' f vfs_read $arg* ^$arg*' # DOUBLE_ARGS
102+ check_error ' f vfs_read%return ^$arg*' # NOFENTRY_ARGS
103+ check_error ' f vfs_read ^hoge' # NO_BTFARG
104+ check_error ' f kfree ^$arg10' # NO_BTFARG (exceed the number of parameters)
105+ check_error ' f kfree%return ^$retval' # NO_RETVAL
106+ else
107+ check_error ' f vfs_read ^$arg*' # NOSUP_BTFARG
108+ check_error ' t kfree ^$arg*' # NOSUP_BTFARG
109+ fi
110+
97111exit 0
Original file line number Diff line number Diff line change @@ -103,4 +103,18 @@ check_error 'p vfs_read^%hoge' # BAD_ADDR_SUFFIX
103103check_error ' p ^vfs_read+10%return' # BAD_RETPROBE
104104fi
105105
106+ # BTF arguments errors
107+ if grep -q " <argname>" README; then
108+ check_error ' p vfs_read args=^$arg*' # BAD_VAR_ARGS
109+ check_error ' p vfs_read +0(^$arg*)' # BAD_VAR_ARGS
110+ check_error ' p vfs_read $arg* ^$arg*' # DOUBLE_ARGS
111+ check_error ' r vfs_read ^$arg*' # NOFENTRY_ARGS
112+ check_error ' p vfs_read+8 ^$arg*' # NOFENTRY_ARGS
113+ check_error ' p vfs_read ^hoge' # NO_BTFARG
114+ check_error ' p kfree ^$arg10' # NO_BTFARG (exceed the number of parameters)
115+ check_error ' r kfree ^$retval' # NO_RETVAL
116+ else
117+ check_error ' p vfs_read ^$arg*' # NOSUP_BTFARG
118+ fi
119+
106120exit 0
You can’t perform that action at this time.
0 commit comments