diff options
| author | 2020-08-18 14:14:25 +0200 | |
|---|---|---|
| committer | 2020-08-18 14:14:25 +0200 | |
| commit | d85ddd1318e66c0c2665dbfcbc21a8b66c9152aa (patch) | |
| tree | e49e401abd2468b398d4bc84c7e05c2c2c3b0966 /tools/perf/util/annotate.c | |
| parent | MAINTAINERS: Change maintainer for hisilicon DRM driver (diff) | |
| parent | Linux 5.9-rc1 (diff) | |
| download | wireguard-linux-d85ddd1318e66c0c2665dbfcbc21a8b66c9152aa.tar.xz wireguard-linux-d85ddd1318e66c0c2665dbfcbc21a8b66c9152aa.zip | |
Merge v5.9-rc1 into drm-misc-next
Sam needs 5.9-rc1 to have dev_err_probe in to merge some patches.
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Diffstat (limited to 'tools/perf/util/annotate.c')
| -rw-r--r-- | tools/perf/util/annotate.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c index 76bfb4a9d94e..0a1fcf787538 100644 --- a/tools/perf/util/annotate.c +++ b/tools/perf/util/annotate.c @@ -1621,6 +1621,7 @@ static int dso__disassemble_filename(struct dso *dso, char *filename, size_t fil char *build_id_filename; char *build_id_path = NULL; char *pos; + int len; if (dso->symtab_type == DSO_BINARY_TYPE__KALLSYMS && !dso__is_kcore(dso)) @@ -1649,10 +1650,16 @@ static int dso__disassemble_filename(struct dso *dso, char *filename, size_t fil if (pos && strlen(pos) < SBUILD_ID_SIZE - 2) dirname(build_id_path); - if (dso__is_kcore(dso) || - readlink(build_id_path, linkname, sizeof(linkname)) < 0 || - strstr(linkname, DSO__NAME_KALLSYMS) || - access(filename, R_OK)) { + if (dso__is_kcore(dso)) + goto fallback; + + len = readlink(build_id_path, linkname, sizeof(linkname) - 1); + if (len < 0) + goto fallback; + + linkname[len] = '\0'; + if (strstr(linkname, DSO__NAME_KALLSYMS) || + access(filename, R_OK)) { fallback: /* * If we don't have build-ids or the build-id file isn't in the |
