summaryrefslogtreecommitdiff
path: root/usr/src/lib
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2017-03-06 13:07:55 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2017-03-06 13:07:55 +0000
commitcedddd0bb5c808632ca226e9f66ab136098d1b2c (patch)
tree971adb1381c693aa122361817677be4dc3cb3d50 /usr/src/lib
parent91d2d9664188336e93786a92761888d1e299c88f (diff)
parent015408caf0806500740413126a0215c7493f4bdf (diff)
downloadillumos-joyent-cedddd0bb5c808632ca226e9f66ab136098d1b2c.tar.gz
[illumos-gate merge]
commit 015408caf0806500740413126a0215c7493f4bdf 7934 sa_init() should use multi-threaded errno commit 25d3556849fcbe4fe5d517e1add48e0b2d585c70 7933 libcfgadm: memory leak in do_list_common() commit 89ac1330de393e78c8b27c33453223b10d3c18da 7932 cfgadm_plugins/shp: memory leaks in cfga_list_ext() commit 39b16bd33a2633978bee6aed53e3afeb26399eb4 7840 Define uint16_t member in in6_addr commit e1508819051004d7be493a04ee515905ae412142 6899 coverity problems in localedef commit 8241ccbb39665a24ebedcca509f82ef3f0b6dd83 6470 mac_unregister() needs to mod_hash_remove() BEFORE holding the perimeter. commit 6e28b3a925501ed4b842fd8e877e8a89989a4c5c 7897 loader.efi: Use 32-bit value for .text padding, for linker portability commit e3ed3d332db66cf933650481f47832aaadb70ec3 7862 libdisasm: left shift of negative value commit a536a2a3182b56eef2630fb4b4509c9e106655e6 7722 bootblock versioning needs to deal with missing data commit baa708d63390757ca1a97444649f2fe4d3ae98f0 7926 enable gcc warnings for sd Conflicts: usr/src/uts/common/io/scsi/targets/sd.c
Diffstat (limited to 'usr/src/lib')
-rw-r--r--usr/src/lib/cfgadm_plugins/shp/common/shp.c11
-rw-r--r--usr/src/lib/libcfgadm/common/config_admin.c17
-rw-r--r--usr/src/lib/libdevinfo/devinfo.c2
-rw-r--r--usr/src/lib/libdisasm/common/dis_sparc_fmt.c12
-rw-r--r--usr/src/lib/libshare/common/libshare.c2
5 files changed, 25 insertions, 19 deletions
diff --git a/usr/src/lib/cfgadm_plugins/shp/common/shp.c b/usr/src/lib/cfgadm_plugins/shp/common/shp.c
index 50d335a1bc..f8bbda4f7f 100644
--- a/usr/src/lib/cfgadm_plugins/shp/common/shp.c
+++ b/usr/src/lib/cfgadm_plugins/shp/common/shp.c
@@ -1378,6 +1378,7 @@ cfga_list_ext(const char *ap_id, cfga_list_data_t **cs,
{
char *boardtype;
char *cardtype;
+ char *tmpb = NULL, *tmpc = NULL;
struct searcharg slotname_arg;
int fd;
int rv = CFGA_OK;
@@ -1498,16 +1499,16 @@ cfga_list_ext(const char *ap_id, cfga_list_data_t **cs,
(*cs)->ap_status_time = hp_last_change(node);
/* board type */
- if (hp_get_private(node, PCIEHPC_PROP_BOARD_TYPE, &boardtype) != 0)
+ if (hp_get_private(node, PCIEHPC_PROP_BOARD_TYPE, &tmpb) != 0)
boardtype = PCIEHPC_PROP_VALUE_UNKNOWN;
else
- boardtype = get_val_from_result(boardtype);
+ boardtype = get_val_from_result(tmpb);
/* card type */
- if (hp_get_private(node, PCIEHPC_PROP_CARD_TYPE, &cardtype) != 0)
+ if (hp_get_private(node, PCIEHPC_PROP_CARD_TYPE, &tmpc) != 0)
cardtype = PCIEHPC_PROP_VALUE_UNKNOWN;
else
- cardtype = get_val_from_result(cardtype);
+ cardtype = get_val_from_result(tmpc);
/* logical ap_id */
rv = fix_ap_name((*cs)->ap_log_id, ap_id,
@@ -1541,6 +1542,8 @@ cfga_list_ext(const char *ap_id, cfga_list_data_t **cs,
DBG(1, ("cfga_list_ext return success\n"));
rv = CFGA_OK;
+ free(tmpb);
+ free(tmpc);
hp_fini(node);
return (rv);
}
diff --git a/usr/src/lib/libcfgadm/common/config_admin.c b/usr/src/lib/libcfgadm/common/config_admin.c
index d642fa820b..767332c631 100644
--- a/usr/src/lib/libcfgadm/common/config_admin.c
+++ b/usr/src/lib/libcfgadm/common/config_admin.c
@@ -2570,26 +2570,27 @@ config_err(int errnum, int err_type, char **errstring)
* do_list_common - list non-SHP attachment point
*/
static int
-do_list_common(
- di_node_t node,
- di_minor_t minor,
- void *arg)
+do_list_common(di_node_t node, di_minor_t minor, void *arg)
{
di_node_t rnode;
di_hp_t hp;
char *minor_name;
+ char *phys_path;
- minor_name = di_minor_name(minor);
+ if ((minor_name = di_minor_name(minor)) == NULL)
+ return (DI_WALK_CONTINUE);
/*
* since PCIE/PCIHSHPC connectors have both hp nodes and minor nodes
* created for now, we need to specifically exclude these connectors
* during walking minor nodes.
*/
- if ((rnode = di_init(di_devfs_path(node), DINFOSUBTREE | DINFOHP))
- == DI_NODE_NIL) {
+ if ((phys_path = di_devfs_path(node)) == NULL)
+ return (DI_WALK_CONTINUE);
+ rnode = di_init(phys_path, DINFOSUBTREE | DINFOHP);
+ di_devfs_path_free(phys_path);
+ if (rnode == DI_NODE_NIL)
return (DI_WALK_CONTINUE);
- }
for (hp = DI_HP_NIL; (hp = di_hp_next(rnode, hp)) != DI_HP_NIL; ) {
if (strcmp(di_hp_name(hp), minor_name) == 0) {
diff --git a/usr/src/lib/libdevinfo/devinfo.c b/usr/src/lib/libdevinfo/devinfo.c
index 68e51960a2..678f891c90 100644
--- a/usr/src/lib/libdevinfo/devinfo.c
+++ b/usr/src/lib/libdevinfo/devinfo.c
@@ -1065,7 +1065,7 @@ di_driver_ops(di_node_t node)
}
/*
- * returns the length of the path, caller must free memory
+ * Returns pointer to the allocated string, which must be freed by the caller.
*/
char *
di_devfs_path(di_node_t node)
diff --git a/usr/src/lib/libdisasm/common/dis_sparc_fmt.c b/usr/src/lib/libdisasm/common/dis_sparc_fmt.c
index 017c056477..ceaafa47fe 100644
--- a/usr/src/lib/libdisasm/common/dis_sparc_fmt.c
+++ b/usr/src/lib/libdisasm/common/dis_sparc_fmt.c
@@ -32,6 +32,7 @@
#include <sys/byteorder.h>
+#include <sys/debug.h>
#include <stdarg.h>
#if !defined(DIS_STANDALONE)
@@ -647,7 +648,7 @@ static const char *prefetch_str[32] = {
static void prt_field(const char *, uint32_t, int);
static const char *get_regname(dis_handle_t *, int, uint32_t);
-static int32_t sign_extend(int32_t, int32_t);
+static int32_t sign_extend(int32_t, uint32_t);
static void prt_name(dis_handle_t *, const char *, int);
@@ -2203,12 +2204,13 @@ prt_field(const char *field, uint32_t val, int len)
* integer
*/
static int32_t
-sign_extend(int32_t val, int32_t bits)
+sign_extend(int32_t val, uint32_t bits)
{
- if ((val & (1L << (bits - 1))) == 0)
- return (val);
+ uint32_t mask;
- return ((-1L << bits) | val);
+ ASSERT(bits > 0);
+ mask = 1L << (bits - 1); /* 2**(bits - 1) */
+ return (-(val & mask) + (val & ~mask));
}
/*
diff --git a/usr/src/lib/libshare/common/libshare.c b/usr/src/lib/libshare/common/libshare.c
index 320ff911d7..6950031978 100644
--- a/usr/src/lib/libshare/common/libshare.c
+++ b/usr/src/lib/libshare/common/libshare.c
@@ -44,6 +44,7 @@
#include <libintl.h>
#include <thread.h>
#include <synch.h>
+#include <errno.h>
#define DFS_LOCK_FILE "/etc/dfs/fstypes"
#define SA_STRSIZE 256 /* max string size for names */
@@ -879,7 +880,6 @@ sa_init(int init_service)
sablocksigs(&old);
lockfd = open(DFS_LOCK_FILE, O_RDWR);
if (lockfd >= 0) {
- extern int errno;
errno = 0;
(void) lockf(lockfd, F_LOCK, 0);
(void) mutex_lock(&sa_dfstab_lock);