DragonFlyBSD Kernel Audit
DF-2829 / fix.diff
← back to finding ↓ download raw
--- a/sys/vm/vm_zone.c
+++ b/sys/vm/vm_zone.c
@@ -350,16 +350,17 @@
 		lockinit(&z->zgetlk, "zgetlk", 0, LK_CANRECURSE);
 
 		z->zfreecnt = 0;
+		z->znalloc = 0;
 		z->ztotal = 0;
 		z->zmax = 0;
 		z->zname = name;
 		z->zitems = NULL;
 
+		bzero(z->zpcpu, sizeof(z->zpcpu));
+
 		lwkt_gettoken(&vm_token);
 		LIST_INSERT_HEAD(&zlist, z, zlink);
 		lwkt_reltoken(&vm_token);
-
-		bzero(z->zpcpu, sizeof(z->zpcpu));
 	}
 
 	z->zkmvec = NULL;
@@ -450,7 +451,7 @@
 {
 	vm_zone_t z;
 
-	z = (vm_zone_t) kmalloc(sizeof (struct vm_zone), M_ZONE, M_NOWAIT);
+	z = (vm_zone_t) kmalloc(sizeof (struct vm_zone), M_ZONE, M_NOWAIT | M_ZERO);
 	if (z == NULL)
 		return NULL;