changeset 10390:fe2d41eef35a

6872014 it_tgt_create() should first check for existing targets, then check 32-target limit
author Charles Ting <Charles.Ting@Sun.COM>
date Thu, 27 Aug 2009 12:59:34 -0400
parents a4669e62bed8
children 12b08c516444
files usr/src/lib/libiscsit/common/libiscsit.c
diffstat 1 files changed, 5 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/lib/libiscsit/common/libiscsit.c	Thu Aug 27 09:42:12 2009 -0700
+++ b/usr/src/lib/libiscsit/common/libiscsit.c	Thu Aug 27 12:59:34 2009 -0400
@@ -508,7 +508,6 @@
 
 	if (!namep) {
 		/* generate a name */
-
 		ret = it_iqn_generate(buf, sizeof (buf), NULL);
 		if (ret != 0) {
 			return (ret);
@@ -521,12 +520,6 @@
 		}
 	}
 
-	/* Too many targets? */
-	if (cfg->config_tgt_count >= MAX_TARGETS) {
-		return (E2BIG);
-	}
-
-
 	/* make sure this name isn't already on the list */
 	cfgtgt = cfg->config_tgt_list;
 	while (cfgtgt != NULL) {
@@ -536,6 +529,11 @@
 		cfgtgt = cfgtgt->tgt_next;
 	}
 
+	/* Too many targets? */
+	if (cfg->config_tgt_count >= MAX_TARGETS) {
+		return (E2BIG);
+	}
+
 	ptr = calloc(1, sizeof (it_tgt_t));
 	if (ptr == NULL) {
 		return (ENOMEM);