From 443bc9a4de66fe5a8902142c5f62e26d77b03a6c Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Mon, 11 Aug 2008 13:32:02 +0200 Subject: [PATCH] --- yaml --- r: 108203 b: refs/heads/master c: 77ae651347bdd46830da8b28b1efc5e4a9d7cbd0 h: refs/heads/master i: 108201: 6c6c885b88df75e1acbdc20e7f46e05ebe326fa3 108199: 26f73512717cd73cc81af6263cd736af6a07694c v: v3 --- [refs] | 2 +- trunk/kernel/sched_fair.c | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index e52a46ab7252..bc1e54c86b70 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 251a169c69d1ff07cee7a9bb9fc4faff6b1d2ac3 +refs/heads/master: 77ae651347bdd46830da8b28b1efc5e4a9d7cbd0 diff --git a/trunk/kernel/sched_fair.c b/trunk/kernel/sched_fair.c index 0fe94ea43f32..fb8994c6d4bb 100644 --- a/trunk/kernel/sched_fair.c +++ b/trunk/kernel/sched_fair.c @@ -1442,18 +1442,23 @@ __load_balance_iterator(struct cfs_rq *cfs_rq, struct list_head *next) struct task_struct *p = NULL; struct sched_entity *se; - while (next != &cfs_rq->tasks) { + if (next == &cfs_rq->tasks) + return NULL; + + /* Skip over entities that are not tasks */ + do { se = list_entry(next, struct sched_entity, group_node); next = next->next; + } while (next != &cfs_rq->tasks && !entity_is_task(se)); - /* Skip over entities that are not tasks */ - if (entity_is_task(se)) { - p = task_of(se); - break; - } - } + if (next == &cfs_rq->tasks) + return NULL; cfs_rq->balance_iterator = next; + + if (entity_is_task(se)) + p = task_of(se); + return p; }