| From | 平松雅巳 / HIRAMATU,MASAMI <> | Subject | RE: [PATCH 12/31] perf probe: Reset args and nargs for probe_trace_event when failure | Date | Fri, 30 Oct 2015 10:24:07 +0000 |
| |
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
|