diff options
| author | Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> | 2017-10-16 14:32:22 -0400 |
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2017-12-05 13:43:51 -0500 |
| commit | de3d0f12be476271d03f1ddb5a7c241c2f07f126 (patch) | |
| tree | 30ab74be22c53de2ea52809ec540b64e91b57ed2 | |
| parent | d3964221ea14690fe51cb57331b88b5c69e4d2cb (diff) | |
perf pmu: Add check for valid cpuid in perf_pmu__find_map()
On some platforms(arm/arm64) which uses cpus map to get corresponding
cpuid string, cpuid can be NULL for PMUs other than CORE PMUs. Adding
check for NULL cpuid in function perf_pmu__find_map to avoid
segmentation fault.
Signed-off-by: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Ganapatrao Kulkarni <gklkml16@gmail.com>
Cc: Jayachandran C <jnair@caviumnetworks.com>
Cc: Jonathan Cameron <jonathan.cameron@huawei.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Robert Richter <robert.richter@cavium.com>
Cc: Shaokun Zhang <zhangshaokun@hisilicon.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: linux-arm-kernel@lists.infradead.org
Link: http://lkml.kernel.org/r/20171016183222.25750-6-ganapatrao.kulkarni@cavium.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
| -rw-r--r-- | tools/perf/util/pmu.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index 732ff579ec65..8b7c151579c0 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c | |||
| @@ -601,6 +601,12 @@ struct pmu_events_map *perf_pmu__find_map(struct perf_pmu *pmu) | |||
| 601 | char *cpuid = perf_pmu__getcpuid(pmu); | 601 | char *cpuid = perf_pmu__getcpuid(pmu); |
| 602 | int i; | 602 | int i; |
| 603 | 603 | ||
| 604 | /* on some platforms which uses cpus map, cpuid can be NULL for | ||
| 605 | * PMUs other than CORE PMUs. | ||
| 606 | */ | ||
| 607 | if (!cpuid) | ||
| 608 | return NULL; | ||
| 609 | |||
| 604 | i = 0; | 610 | i = 0; |
| 605 | for (;;) { | 611 | for (;;) { |
| 606 | map = &pmu_events_map[i++]; | 612 | map = &pmu_events_map[i++]; |
