summaryrefslogtreecommitdiff
path: root/usr/src/lib
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2018-01-17 12:34:19 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2018-01-17 12:34:19 +0000
commit2a808e6f3a1c5fa1720415a217da96fb64133053 (patch)
tree35a6f9db837e3cfe87bb2917503d93ebc9555b1f /usr/src/lib
parent85c7b8606e4a61f48f51d72efd00cb54a4afc46a (diff)
parentb10f758d69dd151326d3859af7e1d857ec9a6355 (diff)
downloadillumos-joyent-release-20180118.tar.gz
[illumos-gate merge]release-20180118
commit b10f758d69dd151326d3859af7e1d857ec9a6355 8963 default chunk size used by ipmi_fru_read() is too large for some SP's commit 301fd1d6f25595cd8c6d6795f39c72d97aff8cd9 8959 Add notifications when a scrub is paused or resumed commit 01a059ee0cdece49f47fd4d70086dd5bc7d0b0ff 8856 arc_cksum_is_equal() doesn't take into account ABD-logic commit b1b183574d0cf2bf3accbbf7717d88bdc3bbfc33 8952 VMware Workstation NVMe model is of "Unknown class of pci/pnpbios device" value commit be93bc991e25533dcbeb10e952fe0b9314390d90 8806 xattr_dir_inactive() releases used vnode with kernel panic commit 28e9047603953b20acb54306be7c48152a1b03e6 8954 libtopo cannot handle any array type other than string_array. Conflicts: usr/src/lib/libipmi/common/ipmi_fru.c
Diffstat (limited to 'usr/src/lib')
-rw-r--r--usr/src/lib/fm/topo/libtopo/common/topo_xml.c71
-rw-r--r--usr/src/lib/libipmi/common/ipmi_fru.c2
2 files changed, 30 insertions, 43 deletions
diff --git a/usr/src/lib/fm/topo/libtopo/common/topo_xml.c b/usr/src/lib/fm/topo/libtopo/common/topo_xml.c
index bbac0d17f1..228755c953 100644
--- a/usr/src/lib/fm/topo/libtopo/common/topo_xml.c
+++ b/usr/src/lib/fm/topo/libtopo/common/topo_xml.c
@@ -244,35 +244,7 @@ const char *name)
case TOPO_TYPE_UINT32_ARRAY:
case TOPO_TYPE_INT64_ARRAY:
case TOPO_TYPE_UINT64_ARRAY:
- for (cn = xn->xmlChildrenNode; cn != NULL; cn = cn->next)
- if ((xmlStrcmp(cn->name, (xmlChar *)Propitem) == 0) ||
- (xmlStrcmp(cn->name, (xmlChar *)Argitem) == 0))
- nelems++;
-
- if (nelems < 1) {
- topo_dprintf(mp->tm_hdl, TOPO_DBG_ERR, "No <propitem> "
- "or <argitem> elements found for array val");
- return (-1);
- }
- if ((arrbuf = topo_mod_alloc(mp, (nelems * sizeof (uint64_t))))
- == NULL)
- return (topo_mod_seterrno(mp, ETOPO_NOMEM));
- break;
case TOPO_TYPE_STRING_ARRAY:
- for (cn = xn->xmlChildrenNode; cn != NULL; cn = cn->next)
- if ((xmlStrcmp(cn->name, (xmlChar *)Propitem) == 0) ||
- (xmlStrcmp(cn->name, (xmlChar *)Argitem) == 0))
- nelems++;
-
- if (nelems < 1) {
- topo_dprintf(mp->tm_hdl, TOPO_DBG_ERR, "No <propitem> "
- "or <argitem> elements found for array val");
- return (-1);
- }
- if ((strarrbuf = topo_mod_alloc(mp, (nelems * sizeof (char *))))
- == NULL)
- return (topo_mod_seterrno(mp, ETOPO_NOMEM));
- break;
case TOPO_TYPE_FMRI_ARRAY:
for (cn = xn->xmlChildrenNode; cn != NULL; cn = cn->next)
if ((xmlStrcmp(cn->name, (xmlChar *)Propitem) == 0) ||
@@ -281,12 +253,9 @@ const char *name)
if (nelems < 1) {
topo_dprintf(mp->tm_hdl, TOPO_DBG_ERR, "No <propitem> "
- "elements found for array prop");
+ "or <argitem> elements found for array val");
return (-1);
}
- if ((nvlarrbuf = topo_mod_alloc(mp, (nelems *
- sizeof (nvlist_t *)))) == NULL)
- return (topo_mod_seterrno(mp, ETOPO_NOMEM));
break;
default:
topo_dprintf(mp->tm_hdl, TOPO_DBG_ERR,
@@ -296,11 +265,14 @@ const char *name)
switch (ptype) {
case TOPO_TYPE_INT32_ARRAY:
+ if ((arrbuf = topo_mod_alloc(mp, (nelems * sizeof (int32_t))))
+ == NULL)
+ return (topo_mod_seterrno(mp, ETOPO_NOMEM));
for (cn = xn->xmlChildrenNode; cn != NULL; cn = cn->next) {
if ((xmlStrcmp(cn->name, (xmlChar *)Propitem) == 0) ||
(xmlStrcmp(cn->name, (xmlChar *)Argitem) == 0)) {
- if ((str = xmlGetProp(xn, (xmlChar *)Value))
+ if ((str = xmlGetProp(cn, (xmlChar *)Value))
== NULL)
return (-1);
@@ -312,14 +284,17 @@ const char *name)
rv = nvlist_add_int32_array(nvl, name, (int32_t *)arrbuf,
nelems);
- free(arrbuf);
+ topo_mod_free(mp, arrbuf, (nelems * sizeof (int32_t)));
break;
case TOPO_TYPE_UINT32_ARRAY:
+ if ((arrbuf = topo_mod_alloc(mp, (nelems * sizeof (uint32_t))))
+ == NULL)
+ return (topo_mod_seterrno(mp, ETOPO_NOMEM));
for (cn = xn->xmlChildrenNode; cn != NULL; cn = cn->next) {
if ((xmlStrcmp(cn->name, (xmlChar *)Propitem) == 0) ||
(xmlStrcmp(cn->name, (xmlChar *)Argitem) == 0)) {
- if ((str = xmlGetProp(xn, (xmlChar *)Value))
+ if ((str = xmlGetProp(cn, (xmlChar *)Value))
== NULL)
return (-1);
@@ -331,14 +306,17 @@ const char *name)
rv = nvlist_add_uint32_array(nvl, name, (uint32_t *)arrbuf,
nelems);
- free(arrbuf);
+ topo_mod_free(mp, arrbuf, (nelems * sizeof (uint32_t)));
break;
case TOPO_TYPE_INT64_ARRAY:
+ if ((arrbuf = topo_mod_alloc(mp, (nelems * sizeof (int64_t))))
+ == NULL)
+ return (topo_mod_seterrno(mp, ETOPO_NOMEM));
for (cn = xn->xmlChildrenNode; cn != NULL; cn = cn->next) {
if ((xmlStrcmp(cn->name, (xmlChar *)Propitem) == 0) ||
(xmlStrcmp(cn->name, (xmlChar *)Argitem) == 0)) {
- if ((str = xmlGetProp(xn, (xmlChar *)Value))
+ if ((str = xmlGetProp(cn, (xmlChar *)Value))
== NULL)
return (-1);
@@ -350,14 +328,17 @@ const char *name)
rv = nvlist_add_int64_array(nvl, name, (int64_t *)arrbuf,
nelems);
- free(arrbuf);
+ topo_mod_free(mp, arrbuf, (nelems * sizeof (int64_t)));
break;
case TOPO_TYPE_UINT64_ARRAY:
+ if ((arrbuf = topo_mod_alloc(mp, (nelems * sizeof (uint64_t))))
+ == NULL)
+ return (topo_mod_seterrno(mp, ETOPO_NOMEM));
for (cn = xn->xmlChildrenNode; cn != NULL; cn = cn->next) {
if ((xmlStrcmp(cn->name, (xmlChar *)Propitem) == 0) ||
(xmlStrcmp(cn->name, (xmlChar *)Argitem) == 0)) {
- if ((str = xmlGetProp(xn, (xmlChar *)Value))
+ if ((str = xmlGetProp(cn, (xmlChar *)Value))
== NULL)
return (-1);
@@ -369,9 +350,12 @@ const char *name)
rv = nvlist_add_uint64_array(nvl, name, arrbuf,
nelems);
- free(arrbuf);
+ topo_mod_free(mp, arrbuf, (nelems * sizeof (uint64_t)));
break;
case TOPO_TYPE_STRING_ARRAY:
+ if ((strarrbuf = topo_mod_alloc(mp, (nelems * sizeof (char *))))
+ == NULL)
+ return (topo_mod_seterrno(mp, ETOPO_NOMEM));
for (cn = xn->xmlChildrenNode; cn != NULL; cn = cn->next) {
if ((xmlStrcmp(cn->name, (xmlChar *)Propitem) == 0) ||
(xmlStrcmp(cn->name, (xmlChar *)Argitem) == 0)) {
@@ -390,11 +374,14 @@ const char *name)
strarr_free(mp, strarrbuf, nelems);
break;
case TOPO_TYPE_FMRI_ARRAY:
+ if ((nvlarrbuf = topo_mod_alloc(mp, (nelems *
+ sizeof (nvlist_t *)))) == NULL)
+ return (topo_mod_seterrno(mp, ETOPO_NOMEM));
for (cn = xn->xmlChildrenNode; cn != NULL; cn = cn->next) {
if ((xmlStrcmp(cn->name, (xmlChar *)Propitem) == 0) ||
(xmlStrcmp(cn->name, (xmlChar *)Argitem) == 0)) {
- if ((str = xmlGetProp(xn, (xmlChar *)Value))
+ if ((str = xmlGetProp(cn, (xmlChar *)Value))
== NULL)
return (-1);
@@ -409,7 +396,7 @@ const char *name)
rv = nvlist_add_nvlist_array(nvl, name, nvlarrbuf,
nelems);
- free(nvlarrbuf);
+ topo_mod_free(mp, nvlarrbuf, (nelems * sizeof (nvlist_t *)));
break;
}
diff --git a/usr/src/lib/libipmi/common/ipmi_fru.c b/usr/src/lib/libipmi/common/ipmi_fru.c
index b429f91934..b03198b614 100644
--- a/usr/src/lib/libipmi/common/ipmi_fru.c
+++ b/usr/src/lib/libipmi/common/ipmi_fru.c
@@ -108,7 +108,7 @@ ipmi_fru_read(ipmi_handle_t *ihp, ipmi_sdr_fru_locator_t *fru_loc, char **buf)
/*
* The FRU area must be read in chunks as its total size will
- * be larger that what would fit in a single message. The
+ * be larger than what would fit in a single message. The
* maximum size of a message can vary between platforms so
* if while attempting to read a chunk we receive an error code
* indicating that the requested chunk size is invalid, we will