diff options
| -rw-r--r-- | kernel/posix-cpu-timers.c | 7 | 
1 files changed, 4 insertions, 3 deletions
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c index c8008dd58ef..640ded8f5c4 100644 --- a/kernel/posix-cpu-timers.c +++ b/kernel/posix-cpu-timers.c @@ -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);  }  |