]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - tools/perf/util/dso.c
perf tools: Decompress kernel module when reading DSO data
[karo-tx-linux.git] / tools / perf / util / dso.c
index b346b8eba65c0ab63c7d6acdd35428535011b90f..c63525d845c5f5f46380287b9f7625a661ba9373 100644 (file)
@@ -475,7 +475,23 @@ static int __open_dso(struct dso *dso, struct machine *machine)
                return -EINVAL;
        }
 
+       if (dso__needs_decompress(dso)) {
+               char newpath[KMOD_DECOMP_LEN];
+               size_t len = sizeof(newpath);
+
+               if (dso__decompress_kmodule_path(dso, name, newpath, len) < 0) {
+                       free(name);
+                       return -dso->load_errno;
+               }
+
+               strcpy(name, newpath);
+       }
+
        fd = do_open(name);
+
+       if (dso__needs_decompress(dso))
+               unlink(name);
+
        free(name);
        return fd;
 }