--- ./kernel/stop_machine.c.stpmach 2005-11-01 12:06:03.000000000 +0300 +++ ./kernel/stop_machine.c 2005-11-09 13:58:03.000000000 +0300 @@ -114,13 +114,12 @@ static int stop_machine(void) return ret; } - /* Don't schedule us away at this point, please. */ - local_irq_disable(); - /* Now they are all started, make them hold the CPUs, ready. */ + preempt_disable(); stopmachine_set_state(STOPMACHINE_PREPARE); /* Make them disable irqs. */ + local_irq_disable(); stopmachine_set_state(STOPMACHINE_DISABLE_IRQ); return 0;