[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20070924222409.GA28997@elte.hu>
Date: Tue, 25 Sep 2007 00:24:09 +0200
From: Ingo Molnar <mingo@...e.hu>
To: Lee Schermerhorn <Lee.Schermerhorn@...com>
Cc: linux-kernel <linux-kernel@...r.kernel.org>,
Andrew Morton <akpm@...ux-foundation.org>,
Ingo Molnar <mingo@...hat.com>,
Peter Zijlstra <a.p.zijlstra@...llo.nl>,
Dmitry Adamushko <dmitry.adamushko@...il.com>
Subject: Re: 2.6.23-rc7-mm1: panic in scheduler
* Lee Schermerhorn <Lee.Schermerhorn@...com> wrote:
> Taking a quick look at [__]{en|de|queue_entity() and the functions
> they call, I see something suspicious in set_leftmost() in
> sched_fair.c:
>
> static inline void
> set_leftmost(struct cfs_rq *cfs_rq, struct rb_node *leftmost)
> {
> struct sched_entity *se;
>
> cfs_rq->rb_leftmost = leftmost;
> if (leftmost)
> se = rb_entry(leftmost, struct sched_entity, run_node);
> }
>
> Missing code? corrupt patch?
could you pull this git tree ontop of a -rc7 (or later) upstream tree:
git-pull git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-sched-devel.git
does the solve the crash?
the above set_leftmost() code used to be larger and now indeed those
bits are mostly dead code. I've queued up a clean-up patch for that -
see the patch below. It should not impact correctness though, so if you
can still trigger the crash with the latest sched-devel.git tree we'd
like to know about it.
Ingo
------------------->
Subject: sched: remove set_leftmost()
From: Ingo Molnar <mingo@...e.hu>
Lee Schermerhorn noticed that set_leftmost() contains dead code,
remove this.
Reported-by: Lee Schermerhorn <Lee.Schermerhorn@...com>
Signed-off-by: Ingo Molnar <mingo@...e.hu>
---
kernel/sched_fair.c | 14 ++------------
1 file changed, 2 insertions(+), 12 deletions(-)
Index: linux/kernel/sched_fair.c
===================================================================
--- linux.orig/kernel/sched_fair.c
+++ linux/kernel/sched_fair.c
@@ -124,16 +124,6 @@ max_vruntime(u64 min_vruntime, u64 vrunt
return min_vruntime;
}
-static inline void
-set_leftmost(struct cfs_rq *cfs_rq, struct rb_node *leftmost)
-{
- struct sched_entity *se;
-
- cfs_rq->rb_leftmost = leftmost;
- if (leftmost)
- se = rb_entry(leftmost, struct sched_entity, run_node);
-}
-
static inline s64
entity_key(struct cfs_rq *cfs_rq, struct sched_entity *se)
{
@@ -175,7 +165,7 @@ __enqueue_entity(struct cfs_rq *cfs_rq,
* used):
*/
if (leftmost)
- set_leftmost(cfs_rq, &se->run_node);
+ cfs_rq->rb_leftmost = &se->run_node;
rb_link_node(&se->run_node, parent, link);
rb_insert_color(&se->run_node, &cfs_rq->tasks_timeline);
@@ -185,7 +175,7 @@ static void
__dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
{
if (cfs_rq->rb_leftmost == &se->run_node)
- set_leftmost(cfs_rq, rb_next(&se->run_node));
+ cfs_rq->rb_leftmost = rb_next(&se->run_node);
rb_erase(&se->run_node, &cfs_rq->tasks_timeline);
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists