On Wed, 8 Nov 2023 20:01:50 +0900 Masami Hiramatsu (Google) <mhira...@kernel.org> wrote:
> On Tue, 7 Nov 2023 09:40:45 +0900 > Masami Hiramatsu (Google) <mhira...@kernel.org> wrote: > > > 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 > > Wait, with some configuration, this doesn't cause a problem. > Let me try to reproduce the issue... OK, I confirmed that probes/fixes branch fails without this fix. [22] Tracepoint probe event parser error log check [FAIL] Let me update the description. Thank you, > > Thank you, > > > > > 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> > > > -- > Masami Hiramatsu (Google) <mhira...@kernel.org> -- Masami Hiramatsu (Google) <mhira...@kernel.org>