slab: remove magazines from lists in depot_destroy()

This never worked - if there were any magazines, we'd keep on looping
until we crashed.  It'd be nice if there was a BSD SLIST_POP_FIRST() or
something.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
diff --git a/kern/src/slab.c b/kern/src/slab.c
index 86411fb..fecffcd 100644
--- a/kern/src/slab.c
+++ b/kern/src/slab.c
@@ -414,11 +414,15 @@
 
 	lock_depot(depot);
 	while ((mag_i = SLIST_FIRST(&depot->not_empty))) {
+		SLIST_REMOVE_HEAD(&depot->not_empty, link);
 		drain_mag(kc, mag_i);
 		kmem_cache_free(kmem_magazine_cache, mag_i);
 	}
-	while ((mag_i = SLIST_FIRST(&depot->empty)))
+	while ((mag_i = SLIST_FIRST(&depot->empty))) {
+		SLIST_REMOVE_HEAD(&depot->empty, link);
+		assert(mag_i->nr_rounds == 0);
 		kmem_cache_free(kmem_magazine_cache, mag_i);
+	}
 	unlock_depot(depot);
 }