[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <498B7862.2040004@ct.jp.nec.com>
Date: Thu, 05 Feb 2009 15:38:10 -0800
From: Hiroshi Shimamoto <h-shimamoto@...jp.nec.com>
To: Ingo Molnar <mingo@...e.hu>,
Peter Zijlstra <a.p.zijlstra@...llo.nl>
Cc: linux-kernel@...r.kernel.org
Subject: [PATCH 2/2] sched_rt: protect rt_rq->rt_time by rt_runtime_lock
From: Hiroshi Shimamoto <h-shimamoto@...jp.nec.com>
Impact: fix possible race condition
rt_rq->rt_time should be protected.
Signed-off-by: Hiroshi Shimamoto <h-shimamoto@...jp.nec.com>
---
kernel/sched_rt.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
index 299d012..d7654a3 100644
--- a/kernel/sched_rt.c
+++ b/kernel/sched_rt.c
@@ -496,10 +496,10 @@ static int do_sched_rt_period_timer(struct rt_bandwidth *rt_b, int overrun)
struct rq *rq = rq_of_rt_rq(rt_rq);
spin_lock(&rq->lock);
+ spin_lock(&rt_rq->rt_runtime_lock);
if (rt_rq->rt_time) {
u64 runtime;
- spin_lock(&rt_rq->rt_runtime_lock);
if (rt_rq->rt_throttled)
balance_runtime(rt_rq);
runtime = rt_rq->rt_runtime;
@@ -510,9 +510,9 @@ static int do_sched_rt_period_timer(struct rt_bandwidth *rt_b, int overrun)
}
if (rt_rq->rt_time || rt_rq->rt_nr_running)
idle = 0;
- spin_unlock(&rt_rq->rt_runtime_lock);
} else if (rt_rq->rt_nr_running)
idle = 0;
+ spin_unlock(&rt_rq->rt_runtime_lock);
if (enqueue)
sched_rt_rq_enqueue(rt_rq);
--
1.6.1.2
--
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