|
@@ -274,9 +274,7 @@ void thread_group_cputimer(struct task_struct *tsk, struct task_cputime *times)
|
|
|
struct task_cputime sum;
|
|
|
unsigned long flags;
|
|
|
|
|
|
- spin_lock_irqsave(&cputimer->lock, flags);
|
|
|
if (!cputimer->running) {
|
|
|
- cputimer->running = 1;
|
|
|
/*
|
|
|
* The POSIX timer interface allows for absolute time expiry
|
|
|
* values through the TIMER_ABSTIME flag, therefore we have
|
|
@@ -284,8 +282,11 @@ void thread_group_cputimer(struct task_struct *tsk, struct task_cputime *times)
|
|
|
* it.
|
|
|
*/
|
|
|
thread_group_cputime(tsk, &sum);
|
|
|
+ spin_lock_irqsave(&cputimer->lock, flags);
|
|
|
+ cputimer->running = 1;
|
|
|
update_gt_cputime(&cputimer->cputime, &sum);
|
|
|
- }
|
|
|
+ } else
|
|
|
+ spin_lock_irqsave(&cputimer->lock, flags);
|
|
|
*times = cputimer->cputime;
|
|
|
spin_unlock_irqrestore(&cputimer->lock, flags);
|
|
|
}
|