From cd25f3a49f54f6fd5b9c87b62a65dbf567477578 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Wed, 19 Oct 2011 06:43:24 -0700 Subject: [PATCH] --- yaml --- r: 264367 b: refs/heads/master c: f91f6cfd4f9ea794dc3d0bbd54cb1d29d6ef3843 h: refs/heads/master i: 264365: 2908c87c7162c34d38822e4d78151057ccb3c4e8 264363: 26ef5414300767765c81b76f4970b5adfc7fec5b 264359: 0589256d609160e6d428a31085aca9aaa4268bcd 264351: 1eec1f880bbcef2b0b871753dc1d1ce87b68f606 v: v3 --- [refs] | 2 +- trunk/kernel/posix-cpu-timers.c | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index f1a9e53db47e..770aa1e13643 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5a6e8482a16e61250a9121fc9ec719ab0529e760 +refs/heads/master: f91f6cfd4f9ea794dc3d0bbd54cb1d29d6ef3843 diff --git a/trunk/kernel/posix-cpu-timers.c b/trunk/kernel/posix-cpu-timers.c index c8008dd58ef2..640ded8f5c48 100644 --- a/trunk/kernel/posix-cpu-timers.c +++ b/trunk/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); }