summaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/perf_event.c
diff options
context:
space:
mode:
authorWill Deacon <will.deacon@arm.com>2011-11-22 18:01:46 +0000
committerWill Deacon <will.deacon@arm.com>2011-11-22 18:01:46 +0000
commite5a21327644adba32816f74a415114d11c57f2e9 (patch)
tree81264b2c3ba630e7f5d4f43f9ad99e6268515dad /arch/arm/kernel/perf_event.c
parentbce34d14428d35d9a06ddc10cd46ecef311764c9 (diff)
downloadlinux-e5a21327644adba32816f74a415114d11c57f2e9.tar.gz
linux-e5a21327644adba32816f74a415114d11c57f2e9.tar.bz2
linux-e5a21327644adba32816f74a415114d11c57f2e9.zip
ARM: perf: check that we have a platform device when reserving PMU
Attempting to use a hardware counter on a platform with a supported PMU but where the platform_device (defining the interrupts) has not been registered results in a NULL pointer dereference. This patch fixes the problem by checking that we actually have a platform device registered before attempting to grab the interrupts. Reported-by: Pawel Moll <pawel.moll@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm/kernel/perf_event.c')
-rw-r--r--arch/arm/kernel/perf_event.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c
index e508066d3d64..c475379199b1 100644
--- a/arch/arm/kernel/perf_event.c
+++ b/arch/arm/kernel/perf_event.c
@@ -402,6 +402,9 @@ armpmu_reserve_hardware(struct arm_pmu *armpmu)
int i, err, irq, irqs;
struct platform_device *pmu_device = armpmu->plat_device;
+ if (!pmu_device)
+ return -ENODEV;
+
err = reserve_pmu(armpmu->type);
if (err) {
pr_warning("unable to reserve pmu\n");