⬢ DragonFlyBSD Kernel Audit
DF-2901 / fix.diff
← back to finding ↓ download raw
--- a/sys/vfs/hammer2/hammer2_bulkfree.c
+++ b/sys/vfs/hammer2/hammer2_bulkfree.c
@@ -566,9 +566,13 @@
 	       ~(size_t)(HAMMER2_FREEMAP_LEVELN_PSIZE - 1);
 
 	cbinfo.hmp = hmp;
-	cbinfo.bmap = kmem_alloc_swapbacked(&cbinfo.kp, size, VM_SUBSYS_HAMMER);
 	cbinfo.dedup = kmalloc(sizeof(*cbinfo.dedup) * HAMMER2_DEDUP_HEUR_SIZE,
 			       M_HAMMER2, M_WAITOK | M_ZERO);
+	cbinfo.bmap = kmem_alloc_swapbacked(&cbinfo.kp, size, VM_SUBSYS_HAMMER);
+	if (cbinfo.bmap == NULL) {
+		kfree(cbinfo.dedup, M_HAMMER2);
+		return ENOMEM;
+	}
 
 	kprintf("hammer2: bulkfree buf=%jdM\n",
 		(intmax_t)size / (1024 * 1024));