diff options
Diffstat (limited to 'drivers/perf/arm_pmu.c')
-rw-r--r-- | drivers/perf/arm_pmu.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c index f2d01d4d9364..1b8304e1efaa 100644 --- a/drivers/perf/arm_pmu.c +++ b/drivers/perf/arm_pmu.c | |||
@@ -950,17 +950,14 @@ static int of_pmu_irq_cfg(struct arm_pmu *pmu) | |||
950 | 950 | ||
951 | /* For SPIs, we need to track the affinity per IRQ */ | 951 | /* For SPIs, we need to track the affinity per IRQ */ |
952 | if (using_spi) { | 952 | if (using_spi) { |
953 | if (i >= pdev->num_resources) { | 953 | if (i >= pdev->num_resources) |
954 | of_node_put(dn); | ||
955 | break; | 954 | break; |
956 | } | ||
957 | 955 | ||
958 | irqs[i] = cpu; | 956 | irqs[i] = cpu; |
959 | } | 957 | } |
960 | 958 | ||
961 | /* Keep track of the CPUs containing this PMU type */ | 959 | /* Keep track of the CPUs containing this PMU type */ |
962 | cpumask_set_cpu(cpu, &pmu->supported_cpus); | 960 | cpumask_set_cpu(cpu, &pmu->supported_cpus); |
963 | of_node_put(dn); | ||
964 | i++; | 961 | i++; |
965 | } while (1); | 962 | } while (1); |
966 | 963 | ||
@@ -995,9 +992,6 @@ int arm_pmu_device_probe(struct platform_device *pdev, | |||
995 | 992 | ||
996 | armpmu_init(pmu); | 993 | armpmu_init(pmu); |
997 | 994 | ||
998 | if (!__oprofile_cpu_pmu) | ||
999 | __oprofile_cpu_pmu = pmu; | ||
1000 | |||
1001 | pmu->plat_device = pdev; | 995 | pmu->plat_device = pdev; |
1002 | 996 | ||
1003 | if (node && (of_id = of_match_node(of_table, pdev->dev.of_node))) { | 997 | if (node && (of_id = of_match_node(of_table, pdev->dev.of_node))) { |
@@ -1033,6 +1027,9 @@ int arm_pmu_device_probe(struct platform_device *pdev, | |||
1033 | if (ret) | 1027 | if (ret) |
1034 | goto out_destroy; | 1028 | goto out_destroy; |
1035 | 1029 | ||
1030 | if (!__oprofile_cpu_pmu) | ||
1031 | __oprofile_cpu_pmu = pmu; | ||
1032 | |||
1036 | pr_info("enabled with %s PMU driver, %d counters available\n", | 1033 | pr_info("enabled with %s PMU driver, %d counters available\n", |
1037 | pmu->name, pmu->num_events); | 1034 | pmu->name, pmu->num_events); |
1038 | 1035 | ||
@@ -1043,6 +1040,7 @@ out_destroy: | |||
1043 | out_free: | 1040 | out_free: |
1044 | pr_info("%s: failed to register PMU devices!\n", | 1041 | pr_info("%s: failed to register PMU devices!\n", |
1045 | of_node_full_name(node)); | 1042 | of_node_full_name(node)); |
1043 | kfree(pmu->irq_affinity); | ||
1046 | kfree(pmu); | 1044 | kfree(pmu); |
1047 | return ret; | 1045 | return ret; |
1048 | } | 1046 | } |