Skip to content

Commit 132001e

Browse files
committed
selftests/ftrace: Add a testcase for fprobe events on module
Add a testcase for fprobe events on module, which unloads a kernel module on which fprobe events are probing and ensure the ftrace hash map is cleared correctly. Link: https://lore.kernel.org/all/177669369564.132053.623527664540176496.stgit@mhiramat.tok.corp.google.com/ Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
1 parent 476c5bb commit 132001e

1 file changed

Lines changed: 87 additions & 0 deletions

File tree

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
#!/bin/sh
2+
# SPDX-License-Identifier: GPL-2.0
3+
# description: Generic dynamic event - add/remove fprobe events on module
4+
# requires: dynamic_events "f[:[<group>/][<event>]] <func-name>[%return] [<args>]":README enabled_functions
5+
6+
rmmod trace-events-sample ||:
7+
if ! modprobe trace-events-sample ; then
8+
echo "No trace-events sample module - please make CONFIG_SAMPLE_TRACE_EVENTS=m"
9+
exit_unresolved;
10+
fi
11+
trap "lsmod | grep -q trace_events_sample && rmmod trace-events-sample" EXIT
12+
13+
echo 0 > events/enable
14+
echo > dynamic_events
15+
16+
FUNC1='foo_bar*'
17+
FUNC2='vfs_read'
18+
19+
:;: "Add an event on the test module" ;:
20+
echo "f:test1 $FUNC1" >> dynamic_events
21+
echo 1 > events/fprobes/test1/enable
22+
23+
:;: "Ensure it is enabled" ;:
24+
funcs=`cat enabled_functions | wc -l`
25+
test $funcs -ne 0
26+
27+
:;: "Check the enabled_functions is cleared on unloading" ;:
28+
rmmod trace-events-sample
29+
funcs=`cat enabled_functions | wc -l`
30+
test $funcs -eq 0
31+
32+
:;: "Check it is kept clean" ;:
33+
modprobe trace-events-sample
34+
echo 1 > events/fprobes/test1/enable || echo "OK"
35+
funcs=`cat enabled_functions | wc -l`
36+
test $funcs -eq 0
37+
38+
:;: "Add another event not on the test module" ;:
39+
echo "f:test2 $FUNC2" >> dynamic_events
40+
echo 1 > events/fprobes/test2/enable
41+
42+
:;: "Ensure it is enabled" ;:
43+
ofuncs=`cat enabled_functions | wc -l`
44+
test $ofuncs -ne 0
45+
46+
:;: "Disable and remove the first event"
47+
echo 0 > events/fprobes/test1/enable
48+
echo "-:fprobes/test1" >> dynamic_events
49+
funcs=`cat enabled_functions | wc -l`
50+
test $ofuncs -eq $funcs
51+
52+
:;: "Disable and remove other events" ;:
53+
echo 0 > events/fprobes/enable
54+
echo > dynamic_events
55+
funcs=`cat enabled_functions | wc -l`
56+
test $funcs -eq 0
57+
58+
rmmod trace-events-sample
59+
60+
:;: "Add events on kernel and test module" ;:
61+
modprobe trace-events-sample
62+
echo "f:test1 $FUNC1" >> dynamic_events
63+
echo 1 > events/fprobes/test1/enable
64+
echo "f:test2 $FUNC2" >> dynamic_events
65+
echo 1 > events/fprobes/test2/enable
66+
ofuncs=`cat enabled_functions | wc -l`
67+
test $ofuncs -ne 0
68+
69+
:;: "Unload module (ftrace entry should be removed)" ;:
70+
rmmod trace-events-sample
71+
funcs=`cat enabled_functions | wc -l`
72+
test $funcs -ne 0
73+
test $ofuncs -ne $funcs
74+
75+
:;: "Disable and remove core-kernel fprobe event" ;:
76+
echo 0 > events/fprobes/test2/enable
77+
echo "-:fprobes/test2" >> dynamic_events
78+
79+
:;: "Ensure ftrace is disabled." ;:
80+
funcs=`cat enabled_functions | wc -l`
81+
test $funcs -eq 0
82+
83+
echo 0 > events/fprobes/enable
84+
echo > dynamic_events
85+
86+
trap "" EXIT
87+
clear_trace

0 commit comments

Comments
 (0)