perf buildid-cache: Do not require purge files to also be in the file system
authorAdrian Hunter <adrian.hunter@intel.com>
Mon, 11 Jul 2022 09:31:52 +0000 (12:31 +0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 20 Jul 2022 14:07:58 +0000 (11:07 -0300)
realname() returns NULL if the file is not in the file system, but we can
still remove it from the build ID cache in that case, so continue and
attempt the purge with the name provided.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: kvm@vger.kernel.org
Link: https://lore.kernel.org/r/20220711093218.10967-10-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/build-id.c

index 7c9f441936ee03960c81c28523fdb9cf39ab5617..9e176146eb10b698eeb5d1560b31dae664d44f62 100644 (file)
@@ -561,14 +561,11 @@ char *build_id_cache__cachedir(const char *sbuild_id, const char *name,
        char *realname = (char *)name, *filename;
        bool slash = is_kallsyms || is_vdso;
 
-       if (!slash) {
+       if (!slash)
                realname = nsinfo__realpath(name, nsi);
-               if (!realname)
-                       return NULL;
-       }
 
        if (asprintf(&filename, "%s%s%s%s%s", buildid_dir, slash ? "/" : "",
-                    is_vdso ? DSO__NAME_VDSO : realname,
+                    is_vdso ? DSO__NAME_VDSO : (realname ? realname : name),
                     sbuild_id ? "/" : "", sbuild_id ?: "") < 0)
                filename = NULL;