Index: kernel/generic/src/sysinfo/sysinfo.c
===================================================================
--- kernel/generic/src/sysinfo/sysinfo.c	(revision 88e43bc385a97c7449a8a8bdd10a598a9497c134)
+++ kernel/generic/src/sysinfo/sysinfo.c	(revision c0ea73977181a878e909e0c19075283d21709426)
@@ -205,15 +205,24 @@
 		*psubtree =
 		    (sysinfo_item_t *) slab_alloc(sysinfo_item_cache, 0);
-		assert(*psubtree);
+		if (!*psubtree)
+			return NULL;
 
 		/* Fill in item name up to the delimiter */
 		(*psubtree)->name = str_ndup(name, i);
-		assert((*psubtree)->name);
+		if (!(*psubtree)->name) {
+			slab_free(sysinfo_item_cache, *psubtree);
+			return NULL;
+		}
 
 		/* Create subtree items */
 		if (name[i] == '.') {
 			(*psubtree)->subtree_type = SYSINFO_SUBTREE_TABLE;
-			return sysinfo_create_path(name + i + 1,
+			sysinfo_item_t *item = sysinfo_create_path(name + i + 1,
 			    &((*psubtree)->subtree.table));
+			if (!item) {
+				free((*psubtree)->name);
+				slab_free(sysinfo_item_cache, *psubtree);
+			}
+			return item;
 		}
 
@@ -272,5 +281,6 @@
 			sysinfo_item_t *item =
 			    (sysinfo_item_t *) slab_alloc(sysinfo_item_cache, 0);
-			assert(item);
+			if (!item)
+				return NULL;
 
 			cur->next = item;
@@ -278,11 +288,20 @@
 			/* Fill in item name up to the delimiter */
 			item->name = str_ndup(name, i);
-			assert(item->name);
+			if (!item->name) {
+				slab_free(sysinfo_item_cache, item);
+				return NULL;
+			}
 
 			/* Create subtree items */
 			if (name[i] == '.') {
 				item->subtree_type = SYSINFO_SUBTREE_TABLE;
-				return sysinfo_create_path(name + i + 1,
-				    &(item->subtree.table));
+				sysinfo_item_t *sub = sysinfo_create_path(
+				    name + i + 1, &(item->subtree.table));
+				if (!sub) {
+					free(item->name);
+					slab_free(sysinfo_item_cache, item);
+					return NULL;
+				}
+				return sub;
 			}
 
@@ -318,4 +337,6 @@
 		item->val_type = SYSINFO_VAL_VAL;
 		item->val.val = val;
+	} else {
+		printf("Could not set sysinfo item %s.\n", name);
 	}
 
@@ -350,4 +371,6 @@
 		item->val.data.data = data;
 		item->val.data.size = size;
+	} else {
+		printf("Could not set sysinfo item %s.\n", name);
 	}
 
@@ -378,4 +401,6 @@
 		item->val.gen_val.fn = fn;
 		item->val.gen_val.data = data;
+	} else {
+		printf("Could not set sysinfo item %s.\n", name);
 	}
 
@@ -411,4 +436,6 @@
 		item->val.gen_data.fn = fn;
 		item->val.gen_data.data = data;
+	} else {
+		printf("Could not set sysinfo item %s.\n", name);
 	}
 
@@ -434,4 +461,6 @@
 	if (item != NULL)
 		item->val_type = SYSINFO_VAL_UNDEFINED;
+	else
+		printf("Could not set sysinfo item %s.\n", name);
 
 	mutex_unlock(&sysinfo_lock);
@@ -466,4 +495,6 @@
 		item->subtree.generator.fn = fn;
 		item->subtree.generator.data = data;
+	} else {
+		printf("Could not set sysinfo item %s.\n", name);
 	}
 
