Author: trasz
Date: Tue Nov 13 11:29:08 2012
New Revision: 242957
URL: http://svnweb.freebsd.org/changeset/base/242957

Log:
  Don't divide by zero.
  
  Tested by:    swills

Modified:
  head/sys/kern/kern_racct.c

Modified: head/sys/kern/kern_racct.c
==============================================================================
--- head/sys/kern/kern_racct.c  Tue Nov 13 08:35:25 2012        (r242956)
+++ head/sys/kern/kern_racct.c  Tue Nov 13 11:29:08 2012        (r242957)
@@ -921,9 +921,12 @@ racct_proc_exit(struct proc *p)
 #endif
        microuptime(&wallclock);
        timevalsub(&wallclock, &p->p_stats->p_start);
-       pct_estimate = (1000000 * runtime * 100) /
-           ((uint64_t)wallclock.tv_sec * 1000000 +
-           wallclock.tv_usec);
+       if (wallclock.tv_sec > 0 || wallclock.tv_usec > 0) {
+               pct_estimate = (1000000 * runtime * 100) /
+                   ((uint64_t)wallclock.tv_sec * 1000000 +
+                   wallclock.tv_usec);
+       } else
+               pct_estimate = 0;
        pct = racct_getpcpu(p, pct_estimate);
 
        mtx_lock(&racct_lock);
@@ -1136,9 +1139,12 @@ racctd(void)
                                runtime = p->p_prev_runtime;
 #endif
                        p->p_prev_runtime = runtime;
-                       pct_estimate = (1000000 * runtime * 100) /
-                           ((uint64_t)wallclock.tv_sec * 1000000 +
-                           wallclock.tv_usec);
+                       if (wallclock.tv_sec > 0 || wallclock.tv_usec > 0) {
+                               pct_estimate = (1000000 * runtime * 100) /
+                                   ((uint64_t)wallclock.tv_sec * 1000000 +
+                                   wallclock.tv_usec);
+                       } else
+                               pct_estimate = 0;
                        pct = racct_getpcpu(p, pct_estimate);
                        mtx_lock(&racct_lock);
                        racct_set_force_locked(p, RACCT_PCTCPU, pct);
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to