From: Ingo Molnar fix timestamp setting race. Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton --- 25-akpm/kernel/sched.c | 12 ++++-------- 1 files changed, 4 insertions(+), 8 deletions(-) diff -puN kernel/sched.c~sched-consolidate-sbe-sbf-fix-2 kernel/sched.c --- 25/kernel/sched.c~sched-consolidate-sbe-sbf-fix-2 Fri Apr 8 16:27:16 2005 +++ 25-akpm/kernel/sched.c Fri Apr 8 16:27:16 2005 @@ -1293,12 +1293,10 @@ int fastcall wake_up_state(task_t *p, un */ void fastcall sched_fork(task_t *p, int clone_flags) { - int cpu = smp_processor_id(); + int cpu = get_cpu(); #ifdef CONFIG_SMP - preempt_disable(); cpu = sched_balance_self(cpu, SD_BALANCE_FORK); - preempt_enable(); #endif set_task_cpu(p, cpu); @@ -1342,12 +1340,10 @@ void fastcall sched_fork(task_t *p, int * runqueue lock is not a problem. */ current->time_slice = 1; - preempt_disable(); scheduler_tick(); - local_irq_enable(); - preempt_enable(); - } else - local_irq_enable(); + } + local_irq_enable(); + put_cpu(); } /* _