mirror of
https://github.com/torvalds/linux.git
synced 2024-12-29 14:21:47 +00:00
tracing: fprobe-event: Fix to check tracepoint event and return
Fix to check the tracepoint event is not valid with $retval. The commit08c9306fc2
("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. Without this fix, ftracetest, tprobe_syntax_errors.tc fails; [22] Tracepoint probe event parser error log check [FAIL] ---- # tail 22-tprobe_syntax_errors.tc-log.mRKroL + ftrace_errlog_check trace_fprobe t kfree ^$retval dynamic_events + printf %s t kfree + wc -c + pos=8 + printf %s t kfree ^$retval + tr -d ^ + command=t kfree $retval + echo Test command: t kfree $retval Test command: t kfree $retval + echo ---- So 't kfree $retval' should fail (tracepoint doesn't support return probe) but passed it. Link: https://lore.kernel.org/all/169944555933.45057.12831706585287704173.stgit@devnote2/ Fixes:08c9306fc2
("tracing/fprobe-event: Assume fprobe is a return event by $retval") Cc: stable@vger.kernel.org Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
This commit is contained in:
parent
abc28463c8
commit
ce51e6153f
@ -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;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user