Em Fri, Sep 07, 2018 at 11:51:16AM +0300, Adrian Hunter escreveu: > Commit 1c5aae7710bb ("perf machine: Create maps for x86 PTI entry > trampolines") revealed a problem with maps__find_symbol_by_name() that
Can we have this with a Fixes: 1c5aae7710bb? So that that, combined with the CC: stable, tells which stable kernels should get that fix, I think there are scripts harvesting Fixes: tags to help stable maintainers :-) - Arnaldo > resulted in probes not being found e.g. > > $ sudo perf probe xsk_mmap > xsk_mmap is out of .text, skip it. > Probe point 'xsk_mmap' not found. > Error: Failed to add events. > > maps__find_symbol_by_name() can optionally return the map of the found > symbol. It can get the map wrong because, in fact, the symbol is found > on the map's dso, not allowing for the possibility that the dso has more > than one map. Fix by always checking the map contains the symbol. > > Reported-by: Björn Töpel <bjorn.to...@intel.com> > Tested-by: Björn Töpel <bjorn.to...@intel.com> > Cc: sta...@vger.kernel.org > Signed-off-by: Adrian Hunter <adrian.hun...@intel.com> > --- > > > Changes in V2: > > Expanded commit message > Corrected email address > > > tools/perf/util/map.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/tools/perf/util/map.c b/tools/perf/util/map.c > index 3f07a587c8e6..354e54550d2b 100644 > --- a/tools/perf/util/map.c > +++ b/tools/perf/util/map.c > @@ -574,6 +574,13 @@ struct symbol *map_groups__find_symbol(struct map_groups > *mg, > return NULL; > } > > +static bool map__contains_symbol(struct map *map, struct symbol *sym) > +{ > + u64 ip = map->unmap_ip(map, sym->start); > + > + return ip >= map->start && ip < map->end; > +} > + > struct symbol *maps__find_symbol_by_name(struct maps *maps, const char *name, > struct map **mapp) > { > @@ -589,6 +596,10 @@ struct symbol *maps__find_symbol_by_name(struct maps > *maps, const char *name, > > if (sym == NULL) > continue; > + if (!map__contains_symbol(pos, sym)) { > + sym = NULL; > + continue; > + } > if (mapp != NULL) > *mapp = pos; > goto out; > -- > 2.17.1