]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
ARM: vexpress: DCSCB: tighten CPU validity assertion
authorNicolas Pitre <nicolas.pitre@linaro.org>
Sun, 15 Mar 2015 00:29:44 +0000 (20:29 -0400)
committerOlof Johansson <olof@lixom.net>
Fri, 3 Apr 2015 19:52:47 +0000 (12:52 -0700)
Currently the cpu argument validity check uses a hardcoded limit of 4.
The DCSCB configuration data provides the actual number of CPUs and
we already use it elsewhere.  Let's improve the cpu argument validity
check by using that information instead.

Signed-off-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Olof Johansson <olof@lixom.net>
arch/arm/mach-vexpress/dcscb.c

index 30b993399ed7758062f1f458b05d3fee2c9cd7b8..12c74734cd709d9f0228ad605a4600e700a5b75d 100644 (file)
@@ -54,7 +54,7 @@ static int dcscb_power_up(unsigned int cpu, unsigned int cluster)
        unsigned int all_mask;
 
        pr_debug("%s: cpu %u cluster %u\n", __func__, cpu, cluster);
-       if (cpu >= 4 || cluster >= 2)
+       if (cluster >= 2 || !(cpumask & dcscb_allcpus_mask[cluster]))
                return -EINVAL;
 
        all_mask = dcscb_allcpus_mask[cluster];
@@ -105,7 +105,7 @@ static void dcscb_power_down(void)
        cpumask = (1 << cpu);
 
        pr_debug("%s: cpu %u cluster %u\n", __func__, cpu, cluster);
-       BUG_ON(cpu >= 4 || cluster >= 2);
+       BUG_ON(cluster >= 2 || !(cpumask & dcscb_allcpus_mask[cluster]));
 
        all_mask = dcscb_allcpus_mask[cluster];
 
@@ -189,7 +189,7 @@ static void __init dcscb_usage_count_init(void)
        cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1);
 
        pr_debug("%s: cpu %u cluster %u\n", __func__, cpu, cluster);
-       BUG_ON(cpu >= 4 || cluster >= 2);
+       BUG_ON(cluster >= 2 || !((1 << cpu) & dcscb_allcpus_mask[cluster]));
        dcscb_use_count[cpu][cluster] = 1;
 }