2013-06-25 08:17:39

by zhangwei(Jovi)

[permalink] [raw]
Subject: [PATCH 1/2] tracing/kprobes: move free_trace_probe into unregister_trace_probe

There have no good reason to call free_trace_probe
every time when unregister_trace_probe return 0.

Move free_trace_probe into unregister_trace_probe,
make code simpler.

Signed-off-by: zhangwei(Jovi) <[email protected]>
Cc: Masami Hiramatsu <[email protected]>
Cc: Oleg Nesterov <[email protected]>
---
kernel/trace/trace_kprobe.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
index 9f46e98..f193c38 100644
--- a/kernel/trace/trace_kprobe.c
+++ b/kernel/trace/trace_kprobe.c
@@ -401,6 +401,7 @@ static int unregister_trace_probe(struct trace_probe *tp)
__unregister_trace_probe(tp);
list_del(&tp->list);
unregister_probe_event(tp);
+ free_trace_probe(tp);

return 0;
}
@@ -419,7 +420,6 @@ static int register_trace_probe(struct trace_probe *tp)
ret = unregister_trace_probe(old_tp);
if (ret < 0)
goto end;
- free_trace_probe(old_tp);
}

/* Register new event */
@@ -550,8 +550,6 @@ static int create_trace_probe(int argc, char **argv)
}
/* delete an event */
ret = unregister_trace_probe(tp);
- if (ret == 0)
- free_trace_probe(tp);
mutex_unlock(&probe_lock);
return ret;
}
@@ -680,7 +678,6 @@ static int release_all_trace_probes(void)
while (!list_empty(&probe_list)) {
tp = list_entry(probe_list.next, struct trace_probe, list);
unregister_trace_probe(tp);
- free_trace_probe(tp);
}

end:
--
1.7.9.7


Subject: Re: [PATCH 1/2] tracing/kprobes: move free_trace_probe into unregister_trace_probe

(2013/06/25 17:15), zhangwei(Jovi) wrote:
> There have no good reason to call free_trace_probe
> every time when unregister_trace_probe return 0.
>
> Move free_trace_probe into unregister_trace_probe,
> make code simpler.

Sorry, nack. For the symmetrical coding reason, I don't like
involving "free" and "alloc" into "unregister"/"register"
functions. I think those should be just another actions.

Thank you,

>
> Signed-off-by: zhangwei(Jovi) <[email protected]>
> Cc: Masami Hiramatsu <[email protected]>
> Cc: Oleg Nesterov <[email protected]>
> ---
> kernel/trace/trace_kprobe.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
> index 9f46e98..f193c38 100644
> --- a/kernel/trace/trace_kprobe.c
> +++ b/kernel/trace/trace_kprobe.c
> @@ -401,6 +401,7 @@ static int unregister_trace_probe(struct trace_probe *tp)
> __unregister_trace_probe(tp);
> list_del(&tp->list);
> unregister_probe_event(tp);
> + free_trace_probe(tp);
>
> return 0;
> }
> @@ -419,7 +420,6 @@ static int register_trace_probe(struct trace_probe *tp)
> ret = unregister_trace_probe(old_tp);
> if (ret < 0)
> goto end;
> - free_trace_probe(old_tp);
> }
>
> /* Register new event */
> @@ -550,8 +550,6 @@ static int create_trace_probe(int argc, char **argv)
> }
> /* delete an event */
> ret = unregister_trace_probe(tp);
> - if (ret == 0)
> - free_trace_probe(tp);
> mutex_unlock(&probe_lock);
> return ret;
> }
> @@ -680,7 +678,6 @@ static int release_all_trace_probes(void)
> while (!list_empty(&probe_list)) {
> tp = list_entry(probe_list.next, struct trace_probe, list);
> unregister_trace_probe(tp);
> - free_trace_probe(tp);
> }
>
> end:
>


--
Masami HIRAMATSU
IT Management Research Dept. Linux Technology Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: [email protected]

2013-06-25 10:39:22

by zhangwei(Jovi)

[permalink] [raw]
Subject: Re: [PATCH 1/2] tracing/kprobes: move free_trace_probe into unregister_trace_probe

On 2013/6/25 18:10, Masami Hiramatsu wrote:
> (2013/06/25 17:15), zhangwei(Jovi) wrote:
>> There have no good reason to call free_trace_probe
>> every time when unregister_trace_probe return 0.
>>
>> Move free_trace_probe into unregister_trace_probe,
>> make code simpler.
>
> Sorry, nack. For the symmetrical coding reason, I don't like
> involving "free" and "alloc" into "unregister"/"register"
> functions. I think those should be just another actions.
>
> Thank you,

That's fine, I just saw there have a little inconsistent between
trace_kprobe.c and trace_uprobe.c.

Please ignore this patch if you don't like. :)
Thanks.

>
>>
>> Signed-off-by: zhangwei(Jovi) <[email protected]>
>> Cc: Masami Hiramatsu <[email protected]>
>> Cc: Oleg Nesterov <[email protected]>
>> ---
>> kernel/trace/trace_kprobe.c | 5 +----
>> 1 file changed, 1 insertion(+), 4 deletions(-)
>>
>> diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
>> index 9f46e98..f193c38 100644
>> --- a/kernel/trace/trace_kprobe.c
>> +++ b/kernel/trace/trace_kprobe.c
>> @@ -401,6 +401,7 @@ static int unregister_trace_probe(struct trace_probe *tp)
>> __unregister_trace_probe(tp);
>> list_del(&tp->list);
>> unregister_probe_event(tp);
>> + free_trace_probe(tp);
>>
>> return 0;
>> }
>> @@ -419,7 +420,6 @@ static int register_trace_probe(struct trace_probe *tp)
>> ret = unregister_trace_probe(old_tp);
>> if (ret < 0)
>> goto end;
>> - free_trace_probe(old_tp);
>> }
>>
>> /* Register new event */
>> @@ -550,8 +550,6 @@ static int create_trace_probe(int argc, char **argv)
>> }
>> /* delete an event */
>> ret = unregister_trace_probe(tp);
>> - if (ret == 0)
>> - free_trace_probe(tp);
>> mutex_unlock(&probe_lock);
>> return ret;
>> }
>> @@ -680,7 +678,6 @@ static int release_all_trace_probes(void)
>> while (!list_empty(&probe_list)) {
>> tp = list_entry(probe_list.next, struct trace_probe, list);
>> unregister_trace_probe(tp);
>> - free_trace_probe(tp);
>> }
>>
>> end:
>>
>
>

2013-06-25 13:31:25

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH 1/2] tracing/kprobes: move free_trace_probe into unregister_trace_probe

On Tue, 2013-06-25 at 19:10 +0900, Masami Hiramatsu wrote:
> (2013/06/25 17:15), zhangwei(Jovi) wrote:
> > There have no good reason to call free_trace_probe
> > every time when unregister_trace_probe return 0.
> >
> > Move free_trace_probe into unregister_trace_probe,
> > make code simpler.
>
> Sorry, nack. For the symmetrical coding reason, I don't like
> involving "free" and "alloc" into "unregister"/"register"
> functions. I think those should be just another actions.

I totally agree with Masami here. Please do not add "side effects" to
the unregister function.

Thanks,

-- Steve

2013-06-25 13:34:59

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH 1/2] tracing/kprobes: move free_trace_probe into unregister_trace_probe

On Tue, 2013-06-25 at 18:37 +0800, zhangwei(Jovi) wrote:
> On 2013/6/25 18:10, Masami Hiramatsu wrote:
> > (2013/06/25 17:15), zhangwei(Jovi) wrote:
> >> There have no good reason to call free_trace_probe
> >> every time when unregister_trace_probe return 0.
> >>
> >> Move free_trace_probe into unregister_trace_probe,
> >> make code simpler.
> >
> > Sorry, nack. For the symmetrical coding reason, I don't like
> > involving "free" and "alloc" into "unregister"/"register"
> > functions. I think those should be just another actions.
> >
> > Thank you,
>
> That's fine, I just saw there have a little inconsistent between
> trace_kprobe.c and trace_uprobe.c.
>

Is there a place that trace_kprobe.c frees the tp structure in
unregister?

-- Steve

2013-06-25 14:48:14

by Jovi Zhang

[permalink] [raw]
Subject: Re: [PATCH 1/2] tracing/kprobes: move free_trace_probe into unregister_trace_probe

On Tue, Jun 25, 2013 at 9:34 PM, Steven Rostedt <[email protected]> wrote:
> On Tue, 2013-06-25 at 18:37 +0800, zhangwei(Jovi) wrote:
>> On 2013/6/25 18:10, Masami Hiramatsu wrote:
>> > (2013/06/25 17:15), zhangwei(Jovi) wrote:
>> >> There have no good reason to call free_trace_probe
>> >> every time when unregister_trace_probe return 0.
>> >>
>> >> Move free_trace_probe into unregister_trace_probe,
>> >> make code simpler.
>> >
>> > Sorry, nack. For the symmetrical coding reason, I don't like
>> > involving "free" and "alloc" into "unregister"/"register"
>> > functions. I think those should be just another actions.
>> >
>> > Thank you,
>>
>> That's fine, I just saw there have a little inconsistent between
>> trace_kprobe.c and trace_uprobe.c.
>>
>
> Is there a place that trace_kprobe.c frees the tp structure in
> unregister?
>

I won't argue put the free operation into unregister function in
trace_kprobe.c, as I said, one minor problem is the code
pattern between trace_kprobe.c and trace_uprobe.c is so
similar on unregister, but with little inconsistent, maybe
we can unify those code in trace_probe.c someday.

Anyway, this is not big functionality issue, free to leave in there
if authors don't argue.

jovi