Skip to content

Commit 51f269a

Browse files
committed
Merge tag 'probes-fixes-6.4-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace
Pull probes fixes from Masami Hiramatsu: - Return NULL if the trace_probe list on trace_probe_event is empty - selftests/ftrace: Choose testing symbol name for filtering feature from sample data instead of fixed symbol * tag 'probes-fixes-6.4-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace: selftests/ftrace: Choose target function for filter test from samples tracing/probe: trace_probe_primary_from_call(): checked list_first_entry
2 parents 4ecd704 + eb50d0f commit 51f269a

File tree

2 files changed

+28
-19
lines changed

2 files changed

+28
-19
lines changed

kernel/trace/trace_probe.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ trace_probe_primary_from_call(struct trace_event_call *call)
308308
{
309309
struct trace_probe_event *tpe = trace_probe_event_from_call(call);
310310

311-
return list_first_entry(&tpe->probes, struct trace_probe, list);
311+
return list_first_entry_or_null(&tpe->probes, struct trace_probe, list);
312312
}
313313

314314
static inline struct list_head *trace_probe_probe_list(struct trace_probe *tp)

tools/testing/selftests/ftrace/test.d/filter/event-filter-function.tc

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,33 @@ fail() { #msg
99
exit_fail
1010
}
1111

12-
echo "Test event filter function name"
12+
sample_events() {
13+
echo > trace
14+
echo 1 > events/kmem/kmem_cache_free/enable
15+
echo 1 > tracing_on
16+
ls > /dev/null
17+
echo 0 > tracing_on
18+
echo 0 > events/kmem/kmem_cache_free/enable
19+
}
20+
1321
echo 0 > tracing_on
1422
echo 0 > events/enable
23+
24+
echo "Get the most frequently calling function"
25+
sample_events
26+
27+
target_func=`cut -d: -f3 trace | sed 's/call_site=\([^+]*\)+0x.*/\1/' | sort | uniq -c | sort | tail -n 1 | sed 's/^[ 0-9]*//'`
28+
if [ -z "$target_func" ]; then
29+
exit_fail
30+
fi
1531
echo > trace
16-
echo 'call_site.function == exit_mmap' > events/kmem/kmem_cache_free/filter
17-
echo 1 > events/kmem/kmem_cache_free/enable
18-
echo 1 > tracing_on
19-
ls > /dev/null
20-
echo 0 > events/kmem/kmem_cache_free/enable
2132

22-
hitcnt=`grep kmem_cache_free trace| grep exit_mmap | wc -l`
23-
misscnt=`grep kmem_cache_free trace| grep -v exit_mmap | wc -l`
33+
echo "Test event filter function name"
34+
echo "call_site.function == $target_func" > events/kmem/kmem_cache_free/filter
35+
sample_events
36+
37+
hitcnt=`grep kmem_cache_free trace| grep $target_func | wc -l`
38+
misscnt=`grep kmem_cache_free trace| grep -v $target_func | wc -l`
2439

2540
if [ $hitcnt -eq 0 ]; then
2641
exit_fail
@@ -30,20 +45,14 @@ if [ $misscnt -gt 0 ]; then
3045
exit_fail
3146
fi
3247

33-
address=`grep ' exit_mmap$' /proc/kallsyms | cut -d' ' -f1`
48+
address=`grep " ${target_func}\$" /proc/kallsyms | cut -d' ' -f1`
3449

3550
echo "Test event filter function address"
36-
echo 0 > tracing_on
37-
echo 0 > events/enable
38-
echo > trace
3951
echo "call_site.function == 0x$address" > events/kmem/kmem_cache_free/filter
40-
echo 1 > events/kmem/kmem_cache_free/enable
41-
echo 1 > tracing_on
42-
sleep 1
43-
echo 0 > events/kmem/kmem_cache_free/enable
52+
sample_events
4453

45-
hitcnt=`grep kmem_cache_free trace| grep exit_mmap | wc -l`
46-
misscnt=`grep kmem_cache_free trace| grep -v exit_mmap | wc -l`
54+
hitcnt=`grep kmem_cache_free trace| grep $target_func | wc -l`
55+
misscnt=`grep kmem_cache_free trace| grep -v $target_func | wc -l`
4756

4857
if [ $hitcnt -eq 0 ]; then
4958
exit_fail

0 commit comments

Comments
 (0)