sched: fix minor bug in yield
authorSrivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
Mon, 15 Oct 2007 15:00:08 +0000 (17:00 +0200)
committerIngo Molnar <mingo@elte.hu>
Mon, 15 Oct 2007 15:00:08 +0000 (17:00 +0200)
- fix a minor bug in yield (seen for CONFIG_FAIR_GROUP_SCHED),
  group scheduling would skew when yield was called.

Signed-off-by: Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
kernel/sched_fair.c

index 92563cd5af755f9bd3fc76a0911461b0c98b93d5..d8d2e2ff513dc5b8d4923eafbf347057a86b329f 100644 (file)
@@ -725,7 +725,7 @@ static void dequeue_task_fair(struct rq *rq, struct task_struct *p, int sleep)
  */
 static void yield_task_fair(struct rq *rq)
 {
-       struct cfs_rq *cfs_rq = &rq->cfs;
+       struct cfs_rq *cfs_rq = task_cfs_rq(rq->curr);
        struct rb_node **link = &cfs_rq->tasks_timeline.rb_node;
        struct sched_entity *rightmost, *se = &rq->curr->se;
        struct rb_node *parent;