On Mon, 6 Nov 2023 17:28:11 -0500 Steven Rostedt <rost...@goodmis.org> wrote:
> On Sat, 4 Nov 2023 01:05:34 +0900 > "Masami Hiramatsu (Google)" <mhira...@kernel.org> wrote: > > > From: Masami Hiramatsu (Google) <mhira...@kernel.org> > > > > Fix to check the tracepoint event is not valid with $retval. > > The commit 08c9306fc2e3 ("tracing/fprobe-event: Assume fprobe is > > a return event by $retval") introduced automatic return probe > > conversion with $retval. But since tracepoint event does not > > support return probe, $retval is not acceptable. > > Can you add the command that causes this to fail. Actually this doesn't command fail but it expected to fail. $ echo "t kfree $retval" >> dynamic_events This should be rejected because 't' (tracepoint) should not be a return probe. Without this fix, this is accepted. (But it traces a random return value because the tracepoint function will return 'void'.) Thank you, > > -- Steve > > > > > Fixes: 08c9306fc2e3 ("tracing/fprobe-event: Assume fprobe is a return event > > by $retval") > > Cc: sta...@vger.kernel.org > > Signed-off-by: Masami Hiramatsu (Google) <mhira...@kernel.org> > > --- > > kernel/trace/trace_fprobe.c | 9 +++++---- > > 1 file changed, 5 insertions(+), 4 deletions(-) > > > > diff --git a/kernel/trace/trace_fprobe.c b/kernel/trace/trace_fprobe.c > > index 8bfe23af9c73..7d2ddbcfa377 100644 > > --- a/kernel/trace/trace_fprobe.c > > +++ b/kernel/trace/trace_fprobe.c > > @@ -927,11 +927,12 @@ static int parse_symbol_and_return(int argc, const > > char *argv[], > > for (i = 2; i < argc; i++) { > > tmp = strstr(argv[i], "$retval"); > > if (tmp && !isalnum(tmp[7]) && tmp[7] != '_') { > > + if (is_tracepoint) { > > + trace_probe_log_set_index(i); > > + trace_probe_log_err(tmp - argv[i], > > RETVAL_ON_PROBE); > > + return -EINVAL; > > + } > > *is_return = true; > > - /* > > - * NOTE: Don't check is_tracepoint here, because it will > > - * be checked when the argument is parsed. > > - */ > > break; > > } > > } > -- Masami Hiramatsu (Google) <mhira...@kernel.org>