DragonFlyBSD Kernel Audit
DF-0904 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/vfs/hammer2/hammer2_iocom.c b/sys/vfs/hammer2/hammer2_iocom.c
--- a/sys/vfs/hammer2/hammer2_iocom.c
+++ b/sys/vfs/hammer2/hammer2_iocom.c
@@ -311,8 +311,15 @@ hammer2_update_spans(hammer2_dev_t *hmp, kdmsg_state_t *state)
 				     HAMMER2_KEY_MIN, HAMMER2_KEY_MAX,
 				     &error, 0);
 	while (chain) {
-		if (chain->bref.type != HAMMER2_BREF_TYPE_INODE)
+		if (chain->bref.type != HAMMER2_BREF_TYPE_INODE) {
+			kprintf("hammer2_update_spans: non-inode chain type %d "
+				"under super-root, skipping\n",
+				chain->bref.type);
+			chain = hammer2_chain_next(&parent, chain, &key_next,
+					       key_next, HAMMER2_KEY_MAX,
+					       &error, 0);
 			continue;
+		}
 		ripdata = &chain->data->ipdata;
 #if 0
 		kprintf("UPDATE SPANS: %s\n", ripdata->filename);