Message ID | 168830924625.2278819.7022958622963157629.stgit@mhiramat.roam.corp.google.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | tracing/probes: Fix bugs in process_fetch_insn | expand |
On Sun, 2 Jul 2023 23:47:26 +0900 "Masami Hiramatsu (Google)" <mhiramat@kernel.org> wrote: > From: Masami Hiramatsu (Google) <mhiramat@kernel.org> > > Fix to exit fetching arguments if an error is detected when storing > strings. Without this fix, if an array is specified with string types > it may store the data at the wrong address. > > Reported-by: Dan Carpenter <dan.carpenter@linaro.org> > Closes: https://lore.kernel.org/all/8819b154-2ba1-43c3-98a2-cbde20892023@moroto.mountain/ > Fixes: 9b960a38835f ("tracing: probeevent: Unify fetch_insn processing common part") > Cc: stable@vger.kernel.org > Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> > Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org> > --- > kernel/trace/trace_probe_tmpl.h | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/kernel/trace/trace_probe_tmpl.h b/kernel/trace/trace_probe_tmpl.h > index 4735c5cb76fa..d6f2bf69f9bc 100644 > --- a/kernel/trace/trace_probe_tmpl.h > +++ b/kernel/trace/trace_probe_tmpl.h > @@ -193,6 +193,8 @@ process_fetch_insn_bottom(struct fetch_insn *code, unsigned long val, > default: > return -EILSEQ; > } > + if (ret < 0) > + return ret; I found this will leave a garbage data on the trace data if we are in the array. Let me fix this issue. (-EILSEQ case has another issue. I think it should not be recorded) Thank you, > code++; > > /* 4th stage: modify stored value if needed */ >
diff --git a/kernel/trace/trace_probe_tmpl.h b/kernel/trace/trace_probe_tmpl.h index 4735c5cb76fa..d6f2bf69f9bc 100644 --- a/kernel/trace/trace_probe_tmpl.h +++ b/kernel/trace/trace_probe_tmpl.h @@ -193,6 +193,8 @@ process_fetch_insn_bottom(struct fetch_insn *code, unsigned long val, default: return -EILSEQ; } + if (ret < 0) + return ret; code++; /* 4th stage: modify stored value if needed */