⬢ DragonFlyBSD Kernel Audit
DF-4922 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/disk/dm/flakey/dm_target_flakey.c b/sys/dev/disk/dm/flakey/dm_target_flakey.c
index 1111111..2222222 100644
--- a/sys/dev/disk/dm/flakey/dm_target_flakey.c
+++ b/sys/dev/disk/dm/flakey/dm_target_flakey.c
@@ -114,6 +114,9 @@ dm_target_flakey_init(dm_table_entry_t *table_en, int argc, char **argv)
 	dm_table_init_target(table_en, tfc);
 
 	return 0;
 fail:
+	/* Release the pdev reference taken by dm_pdev_insert() above;
+	 * dmp is NULL only when the insert itself failed. */
+	if (dmp != NULL)
+		dm_pdev_decr(dmp);
 	kfree(tfc, M_DMFLAKEY);
 	return err;
 }