diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/x86/kernel/smpboot.c | 4 |
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 | ||
