2022-10-19 02:41:05

by Song Chen

[permalink] [raw]
Subject: [PATCH v2] trace/kprobe: remove duplicated calls of ring_buffer_event_data

Function __kprobe_trace_func calls ring_buffer_event_data to
get a ring buffer, however, it has been done in above call
trace_event_buffer_reserve. So does __kretprobe_trace_func.

This patch removes those duplicated calls.

Signed-off-by: Song Chen <[email protected]>
---
kernel/trace/trace_kprobe.c | 2 --
1 file changed, 2 deletions(-)

diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
index 23f7f0ec4f4c..f905829b856b 100644
--- a/kernel/trace/trace_kprobe.c
+++ b/kernel/trace/trace_kprobe.c
@@ -1394,7 +1394,6 @@ __kprobe_trace_func(struct trace_kprobe *tk, struct pt_regs *regs,
return;

fbuffer.regs = regs;
- entry = fbuffer.entry = ring_buffer_event_data(fbuffer.event);
entry->ip = (unsigned long)tk->rp.kp.addr;
store_trace_args(&entry[1], &tk->tp, regs, sizeof(*entry), dsize);

@@ -1435,7 +1434,6 @@ __kretprobe_trace_func(struct trace_kprobe *tk, struct kretprobe_instance *ri,
return;

fbuffer.regs = regs;
- entry = fbuffer.entry = ring_buffer_event_data(fbuffer.event);
entry->func = (unsigned long)tk->rp.kp.addr;
entry->ret_ip = get_kretprobe_retaddr(ri);
store_trace_args(&entry[1], &tk->tp, regs, sizeof(*entry), dsize);
--
2.25.1


2022-10-19 14:34:46

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH v2] trace/kprobe: remove duplicated calls of ring_buffer_event_data

On Wed, 19 Oct 2022 10:11:18 +0800
Song Chen <[email protected]> wrote:

> Function __kprobe_trace_func calls ring_buffer_event_data to
> get a ring buffer, however, it has been done in above call
> trace_event_buffer_reserve. So does __kretprobe_trace_func.
>
> This patch removes those duplicated calls.
>
> Signed-off-by: Song Chen <[email protected]>

Reviewed-by: Steven Rostedt (Google) <[email protected]>

Masami, want to take this one?

-- Steve

> ---
> kernel/trace/trace_kprobe.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
> index 23f7f0ec4f4c..f905829b856b 100644
> --- a/kernel/trace/trace_kprobe.c
> +++ b/kernel/trace/trace_kprobe.c
> @@ -1394,7 +1394,6 @@ __kprobe_trace_func(struct trace_kprobe *tk, struct pt_regs *regs,
> return;
>
> fbuffer.regs = regs;
> - entry = fbuffer.entry = ring_buffer_event_data(fbuffer.event);
> entry->ip = (unsigned long)tk->rp.kp.addr;
> store_trace_args(&entry[1], &tk->tp, regs, sizeof(*entry), dsize);
>
> @@ -1435,7 +1434,6 @@ __kretprobe_trace_func(struct trace_kprobe *tk, struct kretprobe_instance *ri,
> return;
>
> fbuffer.regs = regs;
> - entry = fbuffer.entry = ring_buffer_event_data(fbuffer.event);
> entry->func = (unsigned long)tk->rp.kp.addr;
> entry->ret_ip = get_kretprobe_retaddr(ri);
> store_trace_args(&entry[1], &tk->tp, regs, sizeof(*entry), dsize);

2022-10-19 15:35:17

by Masami Hiramatsu

[permalink] [raw]
Subject: Re: [PATCH v2] trace/kprobe: remove duplicated calls of ring_buffer_event_data

On Wed, 19 Oct 2022 09:30:22 -0400
Steven Rostedt <[email protected]> wrote:

> On Wed, 19 Oct 2022 10:11:18 +0800
> Song Chen <[email protected]> wrote:
>
> > Function __kprobe_trace_func calls ring_buffer_event_data to
> > get a ring buffer, however, it has been done in above call
> > trace_event_buffer_reserve. So does __kretprobe_trace_func.
> >
> > This patch removes those duplicated calls.
> >
> > Signed-off-by: Song Chen <[email protected]>
>
> Reviewed-by: Steven Rostedt (Google) <[email protected]>
>
> Masami, want to take this one?

yes, this looks good to me.

Acked-by: Masami Hiramatsu (Google) <[email protected]>

Thank you,

>
> -- Steve
>
> > ---
> > kernel/trace/trace_kprobe.c | 2 --
> > 1 file changed, 2 deletions(-)
> >
> > diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
> > index 23f7f0ec4f4c..f905829b856b 100644
> > --- a/kernel/trace/trace_kprobe.c
> > +++ b/kernel/trace/trace_kprobe.c
> > @@ -1394,7 +1394,6 @@ __kprobe_trace_func(struct trace_kprobe *tk, struct pt_regs *regs,
> > return;
> >
> > fbuffer.regs = regs;
> > - entry = fbuffer.entry = ring_buffer_event_data(fbuffer.event);
> > entry->ip = (unsigned long)tk->rp.kp.addr;
> > store_trace_args(&entry[1], &tk->tp, regs, sizeof(*entry), dsize);
> >
> > @@ -1435,7 +1434,6 @@ __kretprobe_trace_func(struct trace_kprobe *tk, struct kretprobe_instance *ri,
> > return;
> >
> > fbuffer.regs = regs;
> > - entry = fbuffer.entry = ring_buffer_event_data(fbuffer.event);
> > entry->func = (unsigned long)tk->rp.kp.addr;
> > entry->ret_ip = get_kretprobe_retaddr(ri);
> > store_trace_args(&entry[1], &tk->tp, regs, sizeof(*entry), dsize);
>


--
Masami Hiramatsu (Google) <[email protected]>