timers: fix itimer/many thread hang, fix
authorIngo Molnar <mingo@elte.hu>
Tue, 30 Sep 2008 06:28:17 +0000 (08:28 +0200)
committerIngo Molnar <mingo@elte.hu>
Tue, 30 Sep 2008 06:28:17 +0000 (08:28 +0200)
fix bogus rq dereference: v3 removed the locking but also removed the rq
initialization.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/sched.c

index 29a3152c45dbfb91c8c1cb53a88805ae4cb56177..ebb03def564bfe93c17953a7e68fbed55de7abd1 100644 (file)
@@ -4042,10 +4042,12 @@ EXPORT_PER_CPU_SYMBOL(kstat);
  */
 unsigned long long task_delta_exec(struct task_struct *p)
 {
-       struct rq *rq;
        unsigned long flags;
+       struct rq *rq;
        u64 ns = 0;
 
+       rq = task_rq_lock(p, &flags);
+
        if (task_current(rq, p)) {
                u64 delta_exec;
 
@@ -4055,6 +4057,8 @@ unsigned long long task_delta_exec(struct task_struct *p)
                        ns = delta_exec;
        }
 
+       task_rq_unlock(rq, &flags);
+
        return ns;
 }