ARM: 7185/1: perf: don't assign platform_device on unsupported CPUs
authorWill Deacon <will.deacon@arm.com>
Fri, 2 Dec 2011 17:16:01 +0000 (18:16 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Tue, 6 Dec 2011 12:48:01 +0000 (12:48 +0000)
In the unlikely case that a platform registers a PMU platform_device
when running on a CPU that is unsupported by perf, we will encounter a
NULL dereference when trying to assign the platform_device to the
cpu_pmu structure.

This patch checks that the CPU is supported by perf before assigning
the platform_device.

Reported-by: Pawel Moll <pawel.moll@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/kernel/perf_event.c

index 8e9c98edc0682a8aa23790737a3b63b08dea847f..88b0941ce51ec674bbf46d604fcbb46f5dc25255 100644 (file)
@@ -640,6 +640,9 @@ static struct platform_device_id armpmu_plat_device_ids[] = {
 
 static int __devinit armpmu_device_probe(struct platform_device *pdev)
 {
+       if (!cpu_pmu)
+               return -ENODEV;
+
        cpu_pmu->plat_device = pdev;
        return 0;
 }