Module Name:    src
Committed By:   mlelstv
Date:           Tue Dec 24 22:14:07 UTC 2013

Modified Files:
        src/sys/dev/dm: dm_ioctl.c

Log Message:
release proplib iterator in failure paths.


To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/sys/dev/dm/dm_ioctl.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/dm/dm_ioctl.c
diff -u src/sys/dev/dm/dm_ioctl.c:1.27 src/sys/dev/dm/dm_ioctl.c:1.28
--- src/sys/dev/dm/dm_ioctl.c:1.27	Fri Oct 18 19:56:30 2013
+++ src/sys/dev/dm/dm_ioctl.c	Tue Dec 24 22:14:07 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: dm_ioctl.c,v 1.27 2013/10/18 19:56:30 christos Exp $      */
+/* $NetBSD: dm_ioctl.c,v 1.28 2013/12/24 22:14:07 mlelstv Exp $      */
 
 /*
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -712,6 +712,7 @@ dm_table_load_ioctl(prop_dictionary_t dm
 
 	if ((dmv = dm_dev_lookup(name, uuid, minor)) == NULL) {
 		DM_REMOVE_FLAG(flags, DM_EXISTS_FLAG);
+		prop_object_iterator_release(iter);
 		return ENOENT;
 	}
 	aprint_debug("Loading table to device: %s--%d\n", name,
@@ -743,12 +744,14 @@ dm_table_load_ioctl(prop_dictionary_t dm
 		    ((target = dm_target_autoload(type)) == NULL)) {
 			dm_table_release(&dmv->table_head, DM_TABLE_INACTIVE);
 			dm_dev_unbusy(dmv);
+			prop_object_iterator_release(iter);
 			return ENOENT;
 		}
 		if ((table_en = kmem_alloc(sizeof(dm_table_entry_t),
 			    KM_SLEEP)) == NULL) {
 			dm_table_release(&dmv->table_head, DM_TABLE_INACTIVE);
 			dm_dev_unbusy(dmv);
+			prop_object_iterator_release(iter);
 			return ENOMEM;
 		}
 		prop_dictionary_get_uint64(target_dict, DM_TABLE_START,
@@ -791,6 +794,7 @@ dm_table_load_ioctl(prop_dictionary_t dm
 
 			dm_dev_unbusy(dmv);
 			dm_target_unbusy(target);
+			prop_object_iterator_release(iter);
 			return ret;
 		}
 		last_table = table_en;

Reply via email to