lkml.org 
[lkml]   [2015]   [Oct]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRE: [PATCH 12/31] perf probe: Reset args and nargs for probe_trace_event when failure
Date
From: Wang Nan [mailto:wangnan0@huawei.com]
>
>When failure occures in add_probe_trace_event(), args in
>probe_trace_event is incomplete. Since information in it may be used
>in futher, this patch frees the allocated memory and set it to NULL
>to avoid dangling pointer.

Sorry for replying late. Please see my comment.

>
>Signed-off-by: Wang Nan <wangnan0@huawei.com>
>Cc: Alexei Starovoitov <ast@plumgrid.com>
>Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
>Cc: Daniel Borkmann <daniel@iogearbox.net>
>Cc: David Ahern <dsahern@gmail.com>
>Cc: He Kuang <hekuang@huawei.com>
>Cc: Jiri Olsa <jolsa@kernel.org>
>Cc: Kaixu Xia <xiakaixu@huawei.com>
>Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
>Cc: Namhyung Kim <namhyung@kernel.org>
>Cc: Paul Mackerras <paulus@samba.org>
>Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
>Cc: Zefan Li <lizefan@huawei.com>
>Cc: pi3orama@163.com
>Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
>Link: http://lkml.kernel.org/n/ebpf-6yw9eg0ej3l4jnqhinngkw86@git.kernel.org
>---
> tools/perf/util/probe-finder.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
>diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c
>index bd8f03d..b1581d7 100644
>--- a/tools/perf/util/probe-finder.c
>+++ b/tools/perf/util/probe-finder.c
>@@ -1235,6 +1235,10 @@ static int add_probe_trace_event(Dwarf_Die *sc_die, struct probe_finder *pf)
>
> end:
> free(args);

Actually, this args is filled with constant strings allocated in libdw, so it doesn't
free args[*].vars.

>+ if (ret) {
>+ tev->nargs = 0;
>+ zfree(&tev->args);

However, all the fields in tev->args[*] are allocated in find_variables. If you'd like
to clear it, you must free the fields too.
So, you should call clear_probe_trace_event(struct probe_trace_event *tev) defined
in util/probe-event.c.

Thank you,

>+ }
> return ret;
> }
>
>--
>1.8.3.4

\
 
 \ /
  Last update: 2015-10-30 11:41    [W:0.611 / U:0.496 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site