From cdad68093b4fa85c2b96a0e7b4661eb08d8894a0 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Tue, 5 Apr 2011 17:23:52 +0200 Subject: [PATCH] --- yaml --- r: 245583 b: refs/heads/master c: ab2515c4b98f7bc4fa11cad9fa0f811d63a72a26 h: refs/heads/master i: 245581: 9fee5823f0d23a2c2ae021d391b75ee0c1b9d375 245579: 3b40d2c7e322565e640a4f3fe5be961e59d024c5 245575: 8110da3ecaac418b1f9d58cfb4969aff28a522b4 245567: 67648d6f37f245bc115c917543e7430048be9115 v: v3 --- [refs] | 2 +- trunk/kernel/sched.c | 17 +++-------------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/[refs] b/[refs] index 491574c36bf9..3c47a79f09eb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0122ec5b02f766c355b3168df53a6c038a24fa0d +refs/heads/master: ab2515c4b98f7bc4fa11cad9fa0f811d63a72a26 diff --git a/trunk/kernel/sched.c b/trunk/kernel/sched.c index f1551271a685..7c5494dccd39 100644 --- a/trunk/kernel/sched.c +++ b/trunk/kernel/sched.c @@ -2736,28 +2736,18 @@ void wake_up_new_task(struct task_struct *p, unsigned long clone_flags) { unsigned long flags; struct rq *rq; - int cpu __maybe_unused = get_cpu(); + raw_spin_lock_irqsave(&p->pi_lock, flags); #ifdef CONFIG_SMP - rq = task_rq_lock(p, &flags); - p->state = TASK_WAKING; - /* * Fork balancing, do it here and not earlier because: * - cpus_allowed can change in the fork path * - any previously selected cpu might disappear through hotplug - * - * We set TASK_WAKING so that select_task_rq() can drop rq->lock - * without people poking at ->cpus_allowed. */ - cpu = select_task_rq(p, SD_BALANCE_FORK, 0); - set_task_cpu(p, cpu); - - p->state = TASK_RUNNING; - task_rq_unlock(rq, p, &flags); + set_task_cpu(p, select_task_rq(p, SD_BALANCE_FORK, 0)); #endif - rq = task_rq_lock(p, &flags); + rq = __task_rq_lock(p); activate_task(rq, p, 0); p->on_rq = 1; trace_sched_wakeup_new(p, true); @@ -2767,7 +2757,6 @@ void wake_up_new_task(struct task_struct *p, unsigned long clone_flags) p->sched_class->task_woken(rq, p); #endif task_rq_unlock(rq, p, &flags); - put_cpu(); } #ifdef CONFIG_PREEMPT_NOTIFIERS