diff options
| author | Linus Torvalds <torvalds@home.transmeta.com> | 2002-03-06 06:41:35 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-03-06 06:41:35 -0800 |
| commit | adc4bc979b028e76bb5859ca345c042d8cd903f2 (patch) | |
| tree | 4a38bced5e4766fe4f2c27e798d59953e4856783 | |
| parent | a925c40f775a179a971bfd77de8e3035c0afc1ac (diff) | |
Well, duh!
Initialize preempt count outside the spinlocks that can
themselves impact it on SMP.
| -rw-r--r-- | kernel/sched.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 81190071b159..45e3b6103360 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -1438,10 +1438,12 @@ void __init init_idle(task_t *idle, int cpu) idle->prio = MAX_PRIO; idle->state = TASK_RUNNING; idle->thread_info->cpu = cpu; - idle->thread_info->preempt_count = (idle->lock_depth >= 0); double_rq_unlock(idle_rq, rq); set_tsk_need_resched(idle); __restore_flags(flags); + + /* Set the preempt count _outside_ the spinlocks! */ + idle->thread_info->preempt_count = (idle->lock_depth >= 0); } extern void init_timervecs(void); |
