diff options
author | Jiri Olsa <jolsa@kernel.org> | 2015-02-12 16:27:50 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2015-03-23 11:37:17 -0400 |
commit | 914f85c4a2db34429b146a57652d2db24d063379 (patch) | |
tree | 59140800e19829656b33e1eb0df53fd553180056 /tools/perf/util/symbol-elf.c | |
parent | bb58a8a459c322196613ad4af8801de41469cebb (diff) |
perf tools: Use kmod_path__parse in decompress_kmodule
Replacing the file name parsing with kmod_path__parse.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-zpyyitlte7lwe2ywi51rj4n5@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/symbol-elf.c')
-rw-r--r-- | tools/perf/util/symbol-elf.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c index 62742e46c010..78ffde9df9bf 100644 --- a/tools/perf/util/symbol-elf.c +++ b/tools/perf/util/symbol-elf.c | |||
@@ -579,32 +579,34 @@ static int dso__swap_init(struct dso *dso, unsigned char eidata) | |||
579 | static int decompress_kmodule(struct dso *dso, const char *name, | 579 | static int decompress_kmodule(struct dso *dso, const char *name, |
580 | enum dso_binary_type type) | 580 | enum dso_binary_type type) |
581 | { | 581 | { |
582 | int fd; | 582 | int fd = -1; |
583 | const char *ext = strrchr(name, '.'); | ||
584 | char tmpbuf[] = "/tmp/perf-kmod-XXXXXX"; | 583 | char tmpbuf[] = "/tmp/perf-kmod-XXXXXX"; |
584 | struct kmod_path m; | ||
585 | 585 | ||
586 | if (type != DSO_BINARY_TYPE__SYSTEM_PATH_KMODULE_COMP && | 586 | if (type != DSO_BINARY_TYPE__SYSTEM_PATH_KMODULE_COMP && |
587 | type != DSO_BINARY_TYPE__GUEST_KMODULE_COMP && | 587 | type != DSO_BINARY_TYPE__GUEST_KMODULE_COMP && |
588 | type != DSO_BINARY_TYPE__BUILD_ID_CACHE) | 588 | type != DSO_BINARY_TYPE__BUILD_ID_CACHE) |
589 | return -1; | 589 | return -1; |
590 | 590 | ||
591 | if (!ext || !is_supported_compression(ext + 1)) { | 591 | if (type == DSO_BINARY_TYPE__BUILD_ID_CACHE) |
592 | ext = strrchr(dso->name, '.'); | 592 | name = dso->long_name; |
593 | if (!ext || !is_supported_compression(ext + 1)) | 593 | |
594 | return -1; | 594 | if (kmod_path__parse_ext(&m, name) || !m.comp) |
595 | } | 595 | return -1; |
596 | 596 | ||
597 | fd = mkstemp(tmpbuf); | 597 | fd = mkstemp(tmpbuf); |
598 | if (fd < 0) | 598 | if (fd < 0) |
599 | return -1; | 599 | goto out; |
600 | 600 | ||
601 | if (!decompress_to_file(ext + 1, name, fd)) { | 601 | if (!decompress_to_file(m.ext, name, fd)) { |
602 | close(fd); | 602 | close(fd); |
603 | fd = -1; | 603 | fd = -1; |
604 | } | 604 | } |
605 | 605 | ||
606 | unlink(tmpbuf); | 606 | unlink(tmpbuf); |
607 | 607 | ||
608 | out: | ||
609 | free(m.ext); | ||
608 | return fd; | 610 | return fd; |
609 | } | 611 | } |
610 | 612 | ||