[PATCH v1 02/11] perf annotate: Fix args leak of map_symbol

Ian Rogers irogers at google.com
Thu Jan 22 08:05:58 PST 2026


On Thu, Jan 22, 2026 at 3:47 AM Suchit Karunakaran
<suchitkarunakaran at gmail.com> wrote:
>
> > @@ -1119,7 +1121,7 @@ static int symbol__parse_objdump_line(struct symbol *sym,
> >                                       struct annotate_args *args,
> >                                       char *parsed_line, int *line_nr, char **fileloc)
> >  {
> > -       struct map *map = args->ms.map;
> > +       struct map *map = args->ms->map;
> >         struct annotation *notes = symbol__annotation(sym);
> >         struct disasm_line *dl;
> >         char *tmp;
> > @@ -1151,7 +1153,7 @@ static int symbol__parse_objdump_line(struct symbol *sym,
> >         args->line    = parsed_line;
> >         args->line_nr = *line_nr;
> >         args->fileloc = *fileloc;
> > -       args->ms.sym  = sym;
> > +       args->ms->sym  = sym;
> >
> >         dl = disasm_line__new(args);
> >         (*line_nr)++;
> > @@ -1172,7 +1174,7 @@ static int symbol__parse_objdump_line(struct symbol *sym,
> >                         .ms = { .map = map, },
> >                 };
> >
> > -               if (!maps__find_ams(args->ms.maps, &target) &&
> > +               if (!maps__find_ams(args->ms->maps, &target) &&
> >                     target.ms.sym->start == target.al_addr)
> >                         dl->ops.target.sym = target.ms.sym;
> >         }
>
> Hi, a noob here so please correct me if I'm wrong.
> Looking at symbol__parse_objdump_line(), shouldn't we be calling
> map__get() when initializing the target struct? Since maps__find_ams()
> now calls map__put() (after patch 1).
> struct addr_map_symbol target = {
>     .addr = dl->ops.target.addr,
>     .ms = { .map = map__get(map), },
> };
> This would match the pattern used in call__parse() and jump__parse()
> that were fixed in patch 2.

Agreed this is another problem. I'll add the missing put and
addr_map_symbol__exit missing here.

Thanks,
Ian



More information about the linux-riscv mailing list