aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-realview
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2010-12-03 05:42:58 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2010-12-20 10:08:26 -0500
commitbbc3d14e9aca023bb98e580aa1c9350af8effdb1 (patch)
treed4b70bc67c04d1cbe05948a9368f916198237dbc /arch/arm/mach-realview
parent28e18293cf0f8d23a0950d7b1d2212d11af494dc (diff)
ARM: SMP: move CPU number sanity checks to smp_init_cpus()
Ensure that the number of CPUs is sanity checked before setting the number of possible CPUs. This avoids any chance of overflowing the cpu_possible bitmap. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-realview')
-rw-r--r--arch/arm/mach-realview/platsmp.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/arch/arm/mach-realview/platsmp.c b/arch/arm/mach-realview/platsmp.c
index af3d9093390b..108e92f9746b 100644
--- a/arch/arm/mach-realview/platsmp.c
+++ b/arch/arm/mach-realview/platsmp.c
@@ -160,16 +160,6 @@ void __init smp_init_cpus(void)
160{ 160{
161 unsigned int i, ncores = get_core_count(); 161 unsigned int i, ncores = get_core_count();
162 162
163 for (i = 0; i < ncores; i++)
164 set_cpu_possible(i, true);
165}
166
167void __init smp_prepare_cpus(unsigned int max_cpus)
168{
169 unsigned int ncores = get_core_count();
170 unsigned int cpu = smp_processor_id();
171 int i;
172
173 /* sanity check */ 163 /* sanity check */
174 if (ncores == 0) { 164 if (ncores == 0) {
175 printk(KERN_ERR 165 printk(KERN_ERR
@@ -186,6 +176,16 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
186 ncores = NR_CPUS; 176 ncores = NR_CPUS;
187 } 177 }
188 178
179 for (i = 0; i < ncores; i++)
180 set_cpu_possible(i, true);
181}
182
183void __init smp_prepare_cpus(unsigned int max_cpus)
184{
185 unsigned int ncores = num_possible_cpus();
186 unsigned int cpu = smp_processor_id();
187 int i;
188
189 smp_store_cpu_info(cpu); 189 smp_store_cpu_info(cpu);
190 190
191 /* 191 /*