Messages in this thread | | | Date | Thu, 19 Aug 2021 13:52:46 +0900 | From | Masami Hiramatsu <> | Subject | Re: [PATCH v7 07/10] tracing/probes: Have process_fetch_insn() take a void * instead of pt_regs |
| |
On Thu, 19 Aug 2021 00:13:28 -0400 Steven Rostedt <rostedt@goodmis.org> wrote:
> From: "Steven Rostedt (VMware)" <rostedt@goodmis.org> > > In preparation to allow event probes to use the process_fetch_insn() > callback in trace_probe_tmpl.h, change the data passed to it from a > pointer to pt_regs, as the event probe will not be using regs, and make it > a void pointer instead.
Yes, it is reasonable to be updated in the separated patch.
Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
Thank you!
> > Update the process_fetch_insn() callers for kprobe and uprobe events to > have the regs defined in the function and just typecast the void pointer > parameter. > > Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> > --- > kernel/trace/trace_kprobe.c | 3 ++- > kernel/trace/trace_probe_tmpl.h | 6 +++--- > kernel/trace/trace_uprobe.c | 3 ++- > 3 files changed, 7 insertions(+), 5 deletions(-) > > diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c > index c6fe7a6e3f35..4b013d24f5a9 100644 > --- a/kernel/trace/trace_kprobe.c > +++ b/kernel/trace/trace_kprobe.c > @@ -1325,9 +1325,10 @@ probe_mem_read(void *dest, void *src, size_t size) > > /* Note that we don't verify it, since the code does not come from user space */ > static int > -process_fetch_insn(struct fetch_insn *code, struct pt_regs *regs, void *dest, > +process_fetch_insn(struct fetch_insn *code, void *rec, void *dest, > void *base) > { > + struct pt_regs *regs = rec; > unsigned long val; > > retry: > diff --git a/kernel/trace/trace_probe_tmpl.h b/kernel/trace/trace_probe_tmpl.h > index f003c5d02a3a..b3bdb8ddb862 100644 > --- a/kernel/trace/trace_probe_tmpl.h > +++ b/kernel/trace/trace_probe_tmpl.h > @@ -54,7 +54,7 @@ fetch_apply_bitfield(struct fetch_insn *code, void *buf) > * If dest is NULL, don't store result and return required dynamic data size. > */ > static int > -process_fetch_insn(struct fetch_insn *code, struct pt_regs *regs, > +process_fetch_insn(struct fetch_insn *code, void *rec, > void *dest, void *base); > static nokprobe_inline int fetch_store_strlen(unsigned long addr); > static nokprobe_inline int > @@ -188,7 +188,7 @@ __get_data_size(struct trace_probe *tp, struct pt_regs *regs) > > /* Store the value of each argument */ > static nokprobe_inline void > -store_trace_args(void *data, struct trace_probe *tp, struct pt_regs *regs, > +store_trace_args(void *data, struct trace_probe *tp, void *rec, > int header_size, int maxlen) > { > struct probe_arg *arg; > @@ -203,7 +203,7 @@ store_trace_args(void *data, struct trace_probe *tp, struct pt_regs *regs, > /* Point the dynamic data area if needed */ > if (unlikely(arg->dynamic)) > *dl = make_data_loc(maxlen, dyndata - base); > - ret = process_fetch_insn(arg->code, regs, dl, base); > + ret = process_fetch_insn(arg->code, rec, dl, base); > if (unlikely(ret < 0 && arg->dynamic)) { > *dl = make_data_loc(0, dyndata - base); > } else { > diff --git a/kernel/trace/trace_uprobe.c b/kernel/trace/trace_uprobe.c > index 09f8ca7f7ba0..d219ba50efbd 100644 > --- a/kernel/trace/trace_uprobe.c > +++ b/kernel/trace/trace_uprobe.c > @@ -213,9 +213,10 @@ static unsigned long translate_user_vaddr(unsigned long file_offset) > > /* Note that we don't verify it, since the code does not come from user space */ > static int > -process_fetch_insn(struct fetch_insn *code, struct pt_regs *regs, void *dest, > +process_fetch_insn(struct fetch_insn *code, void *rec, void *dest, > void *base) > { > + struct pt_regs *regs = rec; > unsigned long val; > > /* 1st stage: get value from context */ > -- > 2.30.2
-- Masami Hiramatsu <mhiramat@kernel.org>
| |