[PATCH] sched: Fix 32bit race

From: Peter Zijlstra
Date: Tue Jul 12 2011 - 08:07:44 EST


Ingo, can we get the below patch into sched/urgent and towards Linus
before he cuts a release?

I'm surprised there weren't more 32bit-smp doesn't boot for me
complaints, either Bruno is a very 'lucky' man, or nobody is using 32bit
kernels any more since he was hitting this quite reliably.

---
Subject: sched: Fix 32bit race
From: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
Date: Mon Jul 11 16:28:50 CEST 2011

Commit 3fe1698b7fe0 ("sched: Deal with non-atomic min_vruntime reads
on 32bit") forgot to initialize min_vruntime_copy which could lead to
an infinite while loop in task_waking_fair() under some circumstances
(early boot, lucky timing).

Reported-and-tested-by: Bruno Wolff III <bruno@xxxxxxxx>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
---
Index: linux-2.6/kernel/sched.c
===================================================================
--- linux-2.6.orig/kernel/sched.c
+++ linux-2.6/kernel/sched.c
@@ -7750,6 +7750,9 @@ static void init_cfs_rq(struct cfs_rq *c
#endif
#endif
cfs_rq->min_vruntime = (u64)(-(1LL << 20));
+#ifndef CONFIG_64BIT
+ cfs_rq->min_vruntime_copy = cfs_rq->min_vruntime;
+#endif
}

static void init_rt_rq(struct rt_rq *rt_rq, struct rq *rq)

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/