Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

+29 -20
+1 -1
kernel/trace/trace_probe.h
··· 308 308 { 309 309 struct trace_probe_event *tpe = trace_probe_event_from_call(call); 310 310 311 - return list_first_entry(&tpe->probes, struct trace_probe, list); 311 + return list_first_entry_or_null(&tpe->probes, struct trace_probe, list); 312 312 } 313 313 314 314 static inline struct list_head *trace_probe_probe_list(struct trace_probe *tp)
+28 -19
tools/testing/selftests/ftrace/test.d/filter/event-filter-function.tc
··· 9 9 exit_fail 10 10 } 11 11 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 + 13 21 echo 0 > tracing_on 14 22 echo 0 > events/enable 15 - 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 21 23 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` 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 31 + echo > trace 32 + 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` 24 39 25 40 if [ $hitcnt -eq 0 ]; then 26 41 exit_fail ··· 45 30 exit_fail 46 31 fi 47 32 48 - address=`grep ' exit_mmap$' /proc/kallsyms | cut -d' ' -f1` 33 + address=`grep " ${target_func}\$" /proc/kallsyms | cut -d' ' -f1` 49 34 50 35 echo "Test event filter function address" 51 - echo 0 > tracing_on 52 - echo 0 > events/enable 53 - echo > trace 54 36 echo "call_site.function == 0x$address" > events/kmem/kmem_cache_free/filter 55 - echo 1 > events/kmem/kmem_cache_free/enable 56 - echo 1 > tracing_on 57 - sleep 1 58 - echo 0 > events/kmem/kmem_cache_free/enable 37 + sample_events 59 38 60 - hitcnt=`grep kmem_cache_free trace| grep exit_mmap | wc -l` 61 - misscnt=`grep kmem_cache_free trace| grep -v exit_mmap | wc -l` 39 + hitcnt=`grep kmem_cache_free trace| grep $target_func | wc -l` 40 + misscnt=`grep kmem_cache_free trace| grep -v $target_func | wc -l` 62 41 63 42 if [ $hitcnt -eq 0 ]; then 64 43 exit_fail