Messages in this thread | | | From | Ian Rogers <> | Date | Mon, 24 Jul 2023 14:16:05 -0700 | Subject | Re: [PATCH 1/1] perf dlfilter: Initialize addr_location before passing it to thread__find_symbol_fb() |
| |
On Mon, Jul 24, 2023 at 2:09 PM Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > > As thread__find_symbol_fb() will end up calling thread__find_map() and > it in turn will call these on uninitialized memory: > > maps__zput(al->maps); > map__zput(al->map); > thread__zput(al->thread);
Normally there would be a addr_location__exit. It looks here like most values are copied in al_to_d_al, which copies reference counted values without doing appropriate gets. Perhaps add the gets in al_to_d_al and add the exit to make it clear there can't be addr_location related leaks here.
Thanks, Ian
> Fixes: 0dd5041c9a0eaf8c ("perf addr_location: Add init/exit/copy functions") > Cc: Adrian Hunter <adrian.hunter@intel.com> > Cc: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> > Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com> > Cc: Disha Goel <disgoel@linux.vnet.ibm.com> > Cc: Ian Rogers <irogers@google.com> > Cc: Jiri Olsa <jolsa@kernel.org> > Cc: Kajol Jain <kjain@linux.ibm.com> > Cc: Madhavan Srinivasan <maddy@linux.ibm.com> > Cc: Namhyung Kim <namhyung@kernel.org> > Link: https://lore.kernel.org/lkml/ > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > --- > tools/perf/util/dlfilter.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/tools/perf/util/dlfilter.c b/tools/perf/util/dlfilter.c > index 46f74b2344dbb34c..798a53d7e6c9dfc5 100644 > --- a/tools/perf/util/dlfilter.c > +++ b/tools/perf/util/dlfilter.c > @@ -166,6 +166,7 @@ static __s32 dlfilter__resolve_address(void *ctx, __u64 address, struct perf_dlf > if (!thread) > return -1; > > + addr_location__init(&al); > thread__find_symbol_fb(thread, d->sample->cpumode, address, &al); > > al_to_d_al(&al, &d_al); > -- > 2.37.1 >
| |