Index: kern_synch.c
===================================================================
RCS file: /cvsroot/src/sys/kern/kern_synch.c,v
retrieving revision 1.302
diff -u -u -r1.302 kern_synch.c
--- kern_synch.c	27 Jul 2012 05:36:13 -0000	1.302
+++ kern_synch.c	18 Aug 2012 08:22:10 -0000
@@ -1170,6 +1170,15 @@
 		/* Calculating p_pctcpu only for ps(1) */
 		p->p_pctcpu = (p->p_pctcpu * ccpu) >> FSHIFT;
 
+		if (__predict_false(runtm < 0)) {
+			if (!backwards) {
+				backwards = true;
+				printf("WARNING: negative runtime; "
+				    "monotonic clock has gone backwards\n");
+			mutex_exit(p->p_lock);
+			continue;
+		}
+
 		/*
 		 * Check if the process exceeds its CPU resource allocation.
 		 * If over the hard limit, kill it with SIGKILL.
@@ -1193,13 +1202,7 @@
 			}
 		}
 		mutex_exit(p->p_lock);
-		if (__predict_false(runtm < 0)) {
-			if (!backwards) {
-				backwards = true;
-				printf("WARNING: negative runtime; "
-				    "monotonic clock has gone backwards\n");
-			}
-		} else if (__predict_false(sig)) {
+		if (__predict_false(sig)) {
 			KASSERT((p->p_flag & PK_SYSTEM) == 0);
 			psignal(p, sig);
 		}