⬢ DragonFlyBSD Kernel Audit
DF-3231 / fix.diff
← back to finding ↓ download raw
--- a/sys/vfs/hammer/hammer_transaction.c
+++ b/sys/vfs/hammer/hammer_transaction.c
@@ -50,9 +50,11 @@ hammer_start_transaction(hammer_transaction_t trans, hammer_mount_t hmp)
 	trans->type = HAMMER_TRANS_STD;
 	trans->hmp = hmp;
 	trans->rootvol = hammer_get_root_volume(hmp, &error);
-	KKASSERT(error == 0);
+	if (error) {
+		trans->rootvol = NULL;
+		panic("hammer: root volume header reload failed: %d", error);
+	}
 	trans->tid = 0;
@@ -75,9 +77,11 @@ hammer_simple_transaction(hammer_transaction_t trans, hammer_mount_t hmp)
 	trans->type = HAMMER_TRANS_RO;
 	trans->hmp = hmp;
 	trans->rootvol = hammer_get_root_volume(hmp, &error);
-	KKASSERT(error == 0);
+	if (error) {
+		trans->rootvol = NULL;
+		panic("hammer: root volume header reload failed: %d", error);
+	}
 	trans->tid = 0;
@@ -106,9 +110,11 @@ hammer_start_transaction_fls(hammer_transaction_t trans, hammer_mount_t hmp)
 	trans->type = HAMMER_TRANS_FLS;
 	trans->hmp = hmp;
 	trans->rootvol = hammer_get_root_volume(hmp, &error);
-	KKASSERT(error == 0);
+	if (error) {
+		trans->rootvol = NULL;
+		panic("hammer: root volume header reload failed: %d", error);
+	}
 	trans->tid = hammer_alloc_tid(hmp, 1);