Fix to set correct dso name ("[kernel.kallsyms]") for
kallsyms, as for vdso does.

Signed-off-by: Masami Hiramatsu <mhira...@kernel.org>
---
 tools/perf/util/build-id.c |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/tools/perf/util/build-id.c b/tools/perf/util/build-id.c
index b6ecf87..234d8a1 100644
--- a/tools/perf/util/build-id.c
+++ b/tools/perf/util/build-id.c
@@ -343,21 +343,25 @@ void disable_buildid_cache(void)
 static char *build_id_cache__dirname_from_path(const char *name,
                                               bool is_kallsyms, bool is_vdso)
 {
-       char *realname = (char *)name, *filename;
+       const char *realname = name;
+       char *filename;
        bool slash = is_kallsyms || is_vdso;
 
        if (!slash) {
                realname = realpath(name, NULL);
                if (!realname)
                        return NULL;
-       }
+       } else if (is_vdso)
+               realname = DSO__NAME_VDSO;
+       else
+               realname = "[kernel.kallsyms]";
 
        if (asprintf(&filename, "%s%s%s", buildid_dir, slash ? "/" : "",
-                    is_vdso ? DSO__NAME_VDSO : realname) < 0)
+                    realname) < 0)
                filename = NULL;
 
        if (!slash)
-               free(realname);
+               free((char *)realname);
 
        return filename;
 }

Reply via email to