Message ID | 20240520205737.5085e53a@gandalf.local.home (mailing list archive) |
---|---|
State | Accepted |
Commit | 23a4b108accc29a6125ed14de4a044689ffeda78 |
Headers | show |
Series | tracing/selftests: Fix kprobe event name test for .isra. functions | expand |
On Mon, 20 May 2024 20:57:37 -0400 Steven Rostedt <rostedt@goodmis.org> wrote: > From: "Steven Rostedt (Google)" <rostedt@goodmis.org> > > The kprobe_eventname.tc test checks if a function with .isra. can have a > kprobe attached to it. It loops through the kallsyms file for all the > functions that have the .isra. name, and checks if it exists in the > available_filter_functions file, and if it does, it uses it to attach a > kprobe to it. > > The issue is that kprobes can not attach to functions that are listed more > than once in available_filter_functions. With the latest kernel, the > function that is found is: rapl_event_update.isra.0 > > # grep rapl_event_update.isra.0 /sys/kernel/tracing/available_filter_functions > rapl_event_update.isra.0 > rapl_event_update.isra.0 > > It is listed twice. This causes the attached kprobe to it to fail which in > turn fails the test. Instead of just picking the function function that is > found in available_filter_functions, pick the first one that is listed > only once in available_filter_functions. > Looks good to me. Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> Thanks! > Cc: stable@vger.kernel.org > Fixes: 604e3548236de ("selftests/ftrace: Select an existing function in kprobe_eventname test") > Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org> > --- > .../testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc > index 1f6981ef7afa..ba19b81cef39 100644 > --- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc > +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc > @@ -30,7 +30,8 @@ find_dot_func() { > fi > > grep " [tT] .*\.isra\..*" /proc/kallsyms | cut -f 3 -d " " | while read f; do > - if grep -s $f available_filter_functions; then > + cnt=`grep -s $f available_filter_functions | wc -l`; > + if [ $cnt -eq 1 ]; then > echo $f > break > fi > -- > 2.43.0 >
On Tue, 21 May 2024 10:49:19 +0900 Masami Hiramatsu (Google) <mhiramat@kernel.org> wrote: > > It is listed twice. This causes the attached kprobe to it to fail which in > > turn fails the test. Instead of just picking the function function that is > > found in available_filter_functions, pick the first one that is listed > > only once in available_filter_functions. > > > > Looks good to me. > > Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> > Thanks Masami, Shuah, can you take this through your tree? Thanks, -- Steve
On 5/20/24 19:51, Steven Rostedt wrote: > On Tue, 21 May 2024 10:49:19 +0900 > Masami Hiramatsu (Google) <mhiramat@kernel.org> wrote: > >>> It is listed twice. This causes the attached kprobe to it to fail which in >>> turn fails the test. Instead of just picking the function function that is >>> found in available_filter_functions, pick the first one that is listed >>> only once in available_filter_functions. >>> >> >> Looks good to me. >> >> Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> >> > > Thanks Masami, > > Shuah, can you take this through your tree? Yes. I will take this though mine. thanks, -- Shuah
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc index 1f6981ef7afa..ba19b81cef39 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc @@ -30,7 +30,8 @@ find_dot_func() { fi grep " [tT] .*\.isra\..*" /proc/kallsyms | cut -f 3 -d " " | while read f; do - if grep -s $f available_filter_functions; then + cnt=`grep -s $f available_filter_functions | wc -l`; + if [ $cnt -eq 1 ]; then echo $f break fi