From: Ingo Molnar <mingo@elte.hu>

fix timestamp setting race.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 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();
 }
 
 /*
_