mirror of https://gitee.com/openkylin/linux.git
perf symbols: kallsyms__delta() needs the kmap, not the map
It was only using the map to obtain its kmap, so do the validation in its called, __dso__load_kallsyms() and pass the kmap, that will be used in the following patches in similar simplifications. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: https://lkml.kernel.org/n/tip-u6p9hbonlqzpl6o1z9xzxd75@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
333cc76c9d
commit
019c6820d5
|
@ -1267,14 +1267,10 @@ static int dso__load_kcore(struct dso *dso, struct map *map,
|
|||
* If the kernel is relocated at boot time, kallsyms won't match. Compute the
|
||||
* delta based on the relocation reference symbol.
|
||||
*/
|
||||
static int kallsyms__delta(struct map *map, const char *filename, u64 *delta)
|
||||
static int kallsyms__delta(struct kmap *kmap, const char *filename, u64 *delta)
|
||||
{
|
||||
struct kmap *kmap = map__kmap(map);
|
||||
u64 addr;
|
||||
|
||||
if (!kmap)
|
||||
return -1;
|
||||
|
||||
if (!kmap->ref_reloc_sym || !kmap->ref_reloc_sym->name)
|
||||
return 0;
|
||||
|
||||
|
@ -1288,15 +1284,19 @@ static int kallsyms__delta(struct map *map, const char *filename, u64 *delta)
|
|||
int __dso__load_kallsyms(struct dso *dso, const char *filename,
|
||||
struct map *map, bool no_kcore)
|
||||
{
|
||||
struct kmap *kmap = map__kmap(map);
|
||||
u64 delta = 0;
|
||||
|
||||
if (symbol__restricted_filename(filename, "/proc/kallsyms"))
|
||||
return -1;
|
||||
|
||||
if (!kmap || !kmap->kmaps)
|
||||
return -1;
|
||||
|
||||
if (dso__load_all_kallsyms(dso, filename) < 0)
|
||||
return -1;
|
||||
|
||||
if (kallsyms__delta(map, filename, &delta))
|
||||
if (kallsyms__delta(kmap, filename, &delta))
|
||||
return -1;
|
||||
|
||||
symbols__fixup_end(&dso->symbols);
|
||||
|
|
Loading…
Reference in New Issue