summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/lib/libiscsit/common/libiscsit.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/usr/src/lib/libiscsit/common/libiscsit.c b/usr/src/lib/libiscsit/common/libiscsit.c
index c45b9b1c1d..e584999ac5 100644
--- a/usr/src/lib/libiscsit/common/libiscsit.c
+++ b/usr/src/lib/libiscsit/common/libiscsit.c
@@ -22,7 +22,7 @@
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
*/
/*
- * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
*/
#include <sys/types.h>
@@ -35,6 +35,7 @@
#include <strings.h>
#include <libintl.h>
#include <libscf.h>
+#include <assert.h>
#include <libstmf.h>
#include <libiscsit.h>
@@ -94,6 +95,9 @@ iqnstr(char *s);
static void
euistr(char *s);
+static void
+free_empty_errlist(nvlist_t **errlist);
+
/*
* Function: it_config_load()
*
@@ -484,6 +488,9 @@ it_config_setprop(it_config_t *cfg, nvlist_t *proplist, nvlist_t **errlist)
}
}
+ if (ret == 0)
+ free_empty_errlist(errlist);
+
return (ret);
}
@@ -704,6 +711,8 @@ it_tgt_setprop(it_config_t *cfg, it_tgt_t *tgt, nvlist_t *proplist,
}
tgt->tgt_properties = tprops;
+ free_empty_errlist(errlist);
+
return (0);
}
@@ -1451,6 +1460,8 @@ it_ini_setprop(it_ini_t *ini, nvlist_t *proplist, nvlist_t **errlist)
}
ini->ini_properties = iprops;
+ free_empty_errlist(errlist);
+
return (0);
}
@@ -2042,3 +2053,13 @@ euistr(char *s)
}
}
}
+
+static void
+free_empty_errlist(nvlist_t **errlist)
+{
+ if (errlist != NULL && *errlist != NULL) {
+ assert(fnvlist_num_pairs(*errlist) == 0);
+ nvlist_free(*errlist);
+ *errlist = NULL;
+ }
+}