Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 Aug 2009 14:21:48 GMT
From:      Edward Tomasz Napierala <trasz@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 167408 for review
Message-ID:  <200908161421.n7GELm1o072307@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=167408

Change 167408 by trasz@trasz_anger on 2009/08/16 14:20:54

	Even more KASSERTs.

Affected files ...

.. //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#60 edit

Differences ...

==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#60 (text+ko) ====

@@ -120,14 +120,13 @@
 
 MALLOC_DEFINE(M_HRL, "hrl", "Hierarchical Resource Limits");
 
-#ifdef INVARIANTS
+#ifdef DIAGNOSTIC
 /*
  * Go through the resource usage info and verify that it makes sense.
  */
 static void
 hrl_assert_proc(const struct proc *p __unused)
 {
-#ifdef notyet
 	int i, resource;
 	struct ucred *cred;
 	struct prison *pr;
@@ -139,18 +138,29 @@
 		    ("resource usage propagation meltdown"));
 	KASSERT(cred->cr_ruidinfo->ui_usage.hu_resources[resource] >= 0,
 	    ("resource usage propagation meltdown"));
-	for (pr = cred->cr_prison; pr != NULL; pr = pr->pr_parent)
+	KASSERT(cred->cr_ruidinfo->ui_usage.hu_resources[resource] >=
+	    p->p_usage.hu_resources[resource],
+	    ("resource usage propagation meltdown"));
+	for (pr = cred->cr_prison; pr != NULL; pr = pr->pr_parent) {
 		KASSERT(pr->pr_usage.hu_resources[resource] >= 0,
 		    ("resource usage propagation meltdown"));
+		KASSERT(pr->pr_usage.hu_resources[resource] >=
+	    	    p->p_usage.hu_resources[resource],
+		    ("resource usage propagation meltdown"));
+	}
 	if (hrl_group_accounting) {
 		for (i = 0; i < cred->cr_ngroups; i++) {
-			for (resource = 0; resource < HRL_RESOURCE_MAX; resource++)
-				KASSERT(cred->cr_gidinfos[i]->gi_usage.hu_resources[resource] >= 0, ("resource usage propagation meltdown"));
+			for (resource = 0; resource < HRL_RESOURCE_MAX; resource++) {
+				KASSERT(cred->cr_gidinfos[i]->gi_usage.hu_resources[resource] >= 0,
+				    ("resource usage propagation meltdown"));
+				KASSERT(cred->cr_gidinfos[i]->gi_usage.hu_resources[resource] >=
+	    	    		    p->p_usage.hu_resources[resource],
+				    ("resource usage propagation meltdown"));
+			}
 		}
 	}
-#endif
 }
-#endif /* INVARIANTS */
+#endif /* DIAGNOSTIC */
 
 void
 hrl_proc_exiting(struct proc *p)
@@ -507,7 +517,7 @@
 			continue;
 		}
 	}
-#ifdef INVARIANTS
+#ifdef DIAGNOSTIC
 	hrl_assert_proc(p);
 #endif
 	mtx_unlock(&hrl_lock);
@@ -571,7 +581,7 @@
 			continue;
 		}
 	}
-#ifdef INVARIANTS
+#ifdef DIAGNOSTIC
 	hrl_assert_proc(p);
 #endif
 	mtx_unlock(&hrl_lock);
@@ -626,7 +636,7 @@
 			continue;
 		}
 	}
-#ifdef INVARIANTS
+#ifdef DIAGNOSTIC
 	hrl_assert_proc(p);
 #endif
 	mtx_unlock(&hrl_lock);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200908161421.n7GELm1o072307>