diff --git a/[refs] b/[refs] index ec89f4d477a9..4107e59df3b6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 75d4ef16a6aa84f708188bada182315f80aab6fa +refs/heads/master: 87fefa381ef27f46c1182622ea01eb9504cd2e24 diff --git a/trunk/kernel/sched_fair.c b/trunk/kernel/sched_fair.c index b9e426a8a09f..827a0636525a 100644 --- a/trunk/kernel/sched_fair.c +++ b/trunk/kernel/sched_fair.c @@ -972,10 +972,11 @@ static void task_new_fair(struct rq *rq, struct task_struct *p) if (sysctl_sched_child_runs_first && curr->vruntime < se->vruntime) { - - dequeue_entity(cfs_rq, curr, 0); + /* + * Upon rescheduling, sched_class::put_prev_task() will place + * 'current' within the tree based on its new key value. + */ swap(curr->vruntime, se->vruntime); - enqueue_entity(cfs_rq, curr, 0); } update_stats_enqueue(cfs_rq, se);