aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kernel/smpboot.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 565ebc65920e..ba43dfed353d 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -687,7 +687,7 @@ static int __cpuinit do_boot_cpu(int apicid, int cpu)
687 .done = COMPLETION_INITIALIZER_ONSTACK(c_idle.done), 687 .done = COMPLETION_INITIALIZER_ONSTACK(c_idle.done),
688 }; 688 };
689 689
690 INIT_WORK(&c_idle.work, do_fork_idle); 690 INIT_WORK_ON_STACK(&c_idle.work, do_fork_idle);
691 691
692 alternatives_smp_switch(1); 692 alternatives_smp_switch(1);
693 693
@@ -713,6 +713,7 @@ static int __cpuinit do_boot_cpu(int apicid, int cpu)
713 713
714 if (IS_ERR(c_idle.idle)) { 714 if (IS_ERR(c_idle.idle)) {
715 printk("failed fork for CPU %d\n", cpu); 715 printk("failed fork for CPU %d\n", cpu);
716 destroy_work_on_stack(&c_idle.work);
716 return PTR_ERR(c_idle.idle); 717 return PTR_ERR(c_idle.idle);
717 } 718 }
718 719
@@ -831,6 +832,7 @@ do_rest:
831 smpboot_restore_warm_reset_vector(); 832 smpboot_restore_warm_reset_vector();
832 } 833 }
833 834
835 destroy_work_on_stack(&c_idle.work);
834 return boot_error; 836 return boot_error;
835} 837}
836 838