Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=08e4570a4a393bcc241f78dfc444cb0b07995fc0
Commit:     08e4570a4a393bcc241f78dfc444cb0b07995fc0
Parent:     5e8869bb699d50be5c0733edfc71cfcd5b43e10a
Author:     Ingo Molnar <[EMAIL PROTECTED]>
AuthorDate: Mon Nov 26 21:21:49 2007 +0100
Committer:  Ingo Molnar <[EMAIL PROTECTED]>
CommitDate: Mon Nov 26 21:21:49 2007 +0100

    sched: fix prev_stime calculation
    
    Srivatsa Vaddagiri noticed occasionally incorrect CPU usage
    values in top and tracked it down to stime going below 0 in
    task_stime(). Negative values are possible there due to the
    sampled nature of stime/utime.
    
    Fix suggested by Balbir Singh.
    
    Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]>
    Tested-by: Srivatsa Vaddagiri <[EMAIL PROTECTED]>
    Reviewed-by: Balbir Singh <[EMAIL PROTECTED]>
---
 fs/proc/array.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/fs/proc/array.c b/fs/proc/array.c
index eba339e..65c62e1 100644
--- a/fs/proc/array.c
+++ b/fs/proc/array.c
@@ -374,7 +374,9 @@ static cputime_t task_stime(struct task_struct *p)
        stime = nsec_to_clock_t(p->se.sum_exec_runtime) -
                        cputime_to_clock_t(task_utime(p));
 
-       p->prev_stime = max(p->prev_stime, clock_t_to_cputime(stime));
+       if (stime >= 0)
+               p->prev_stime = max(p->prev_stime, clock_t_to_cputime(stime));
+
        return p->prev_stime;
 }
 #endif
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to