--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -323,12 +323,13 @@ static void __init setup_processor(void)
 void cpu_init(void)
 {
 	unsigned int cpu = smp_processor_id();
-	struct stack *stk = &stacks[cpu];
+	struct stack *stk;
 
 	if (cpu >= NR_CPUS) {
 		printk(KERN_CRIT "CPU%u: bad primary CPU number\n", cpu);
 		BUG();
 	}
+	stk = &stacks[cpu];
 
 	/*
 	 * Define the placement constraint for the inline asm directive below.
@@ -387,13 +388,14 @@ static struct machine_desc * __init setu
 
 static int __init arm_add_memory(unsigned long start, unsigned long size)
 {
-	struct membank *bank = &meminfo.bank[meminfo.nr_banks];
+	struct membank *bank;
 
 	if (meminfo.nr_banks >= NR_BANKS) {
 		printk(KERN_CRIT "NR_BANKS too low, "
 			"ignoring memory at %#lx\n", start);
 		return -EINVAL;
 	}
+	bank = &meminfo.bank[meminfo.nr_banks];
 
 	/*
 	 * Ensure that start/size are aligned to a page boundary.