diff options
author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2017-03-06 13:07:55 +0000 |
---|---|---|
committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2017-03-06 13:07:55 +0000 |
commit | cedddd0bb5c808632ca226e9f66ab136098d1b2c (patch) | |
tree | 971adb1381c693aa122361817677be4dc3cb3d50 /usr/src/lib | |
parent | 91d2d9664188336e93786a92761888d1e299c88f (diff) | |
parent | 015408caf0806500740413126a0215c7493f4bdf (diff) | |
download | illumos-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.c | 11 | ||||
-rw-r--r-- | usr/src/lib/libcfgadm/common/config_admin.c | 17 | ||||
-rw-r--r-- | usr/src/lib/libdevinfo/devinfo.c | 2 | ||||
-rw-r--r-- | usr/src/lib/libdisasm/common/dis_sparc_fmt.c | 12 | ||||
-rw-r--r-- | usr/src/lib/libshare/common/libshare.c | 2 |
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); |