Merge pull request #1749 from ez-lbz/fix-node-name-map-duplicate
util: Fix duplicate node name map entries
diff --git a/buildlib/azure-pipelines.yml b/buildlib/azure-pipelines.yml
index 5f80523..3a00900 100644
--- a/buildlib/azure-pipelines.yml
+++ b/buildlib/azure-pipelines.yml
@@ -34,7 +34,7 @@
image: ucfconsort.azurecr.io/rdma-core/ubuntu-20.04:44.0
endpoint: ucfconsort_registry
- container: leap
- image: ucfconsort.azurecr.io/rdma-core/opensuse-15.0:25.0
+ image: ucfconsort.azurecr.io/rdma-core/opensuse-16.0:64.0
endpoint: ucfconsort_registry
- container: i386
image: ucfconsort.azurecr.io/rdma-core/debian-11-i386:37.0
diff --git a/buildlib/cbuild b/buildlib/cbuild
index eeaf2e2..a307ae2 100755
--- a/buildlib/cbuild
+++ b/buildlib/cbuild
@@ -404,7 +404,7 @@
return res;
class leap(ZypperEnvironment):
- docker_parent = "opensuse/leap:15.0";
+ docker_parent = "opensuse/leap:16.0";
specfile = "suse/rdma-core.spec";
pkgs = {
'cmake',
@@ -426,7 +426,7 @@
};
rpmbuild_options = [ "--without=curlmini" ];
to_azp = True;
- name = "opensuse-15.0";
+ name = "opensuse-16.0";
aliases = {"leap"};
class tumbleweed(ZypperEnvironment):
diff --git a/libibumad/umad.c b/libibumad/umad.c
index d18fbb5..1618381 100644
--- a/libibumad/umad.c
+++ b/libibumad/umad.c
@@ -1482,13 +1482,22 @@
ca_names_t *legacy_ca_names = malloc(sizeof(ca_names_t));
if (!legacy_ca_names)
return -1;
- struct port_guid_port_count counts[UMAD_MAX_PORTS] = {};
- struct guid_ca_pairs_mapping mapping[UMAD_MAX_PORTS] = {};
+ struct port_guid_port_count *counts = calloc(UMAD_MAX_PORTS, sizeof(struct port_guid_port_count));
+ struct guid_ca_pairs_mapping *mapping = calloc(UMAD_MAX_PORTS, sizeof(struct guid_ca_pairs_mapping));
+
+ if (!counts || !mapping) {
+ free(counts);
+ free(mapping);
+ free(legacy_ca_names);
+ return -1;
+ }
memset(cas, 0, sizeof(struct umad_ca_pair) * max);
int cas_found = umad_get_cas_names(legacy_ca_names->_ca_names_arr, UMAD_MAX_DEVICES);
if (cas_found < 0) {
+ free(counts);
+ free(mapping);
free(legacy_ca_names);
return 0;
}
@@ -1532,6 +1541,8 @@
break;
} else {
umad_release_ca(&curr_ca);
+ free(counts);
+ free(mapping);
free(legacy_ca_names);
return -1;
}
@@ -1540,6 +1551,8 @@
umad_release_ca(&curr_ca);
}
+ free(counts);
+ free(mapping);
free(legacy_ca_names);
return added_devices;
}
@@ -1625,18 +1638,23 @@
bool is_gsi = false;
umad_ca_t ca;
- struct umad_ca_pair cas_pair[UMAD_MAX_PORTS] = {};
+ struct umad_ca_pair *cas_pair;
if (!ca_pair)
return -1;
- memset(cas_pair, 0, sizeof(cas_pair));
+ cas_pair = calloc(UMAD_MAX_PORTS, sizeof(struct umad_ca_pair));
+ if (!cas_pair)
+ return -1;
+
memset(ca_pair, 0, sizeof(*ca_pair));
num_cas = umad_get_smi_gsi_pairs(cas_pair, UMAD_MAX_PORTS);
- if (num_cas <= 0)
+ if (num_cas <= 0) {
+ free(cas_pair);
return num_cas;
+ }
for (i = 0; i < (size_t)num_cas; ++i) {
if (enforce_smi && !cas_pair[i].smi_name[0])
@@ -1678,9 +1696,11 @@
if (rc) {
errno = ENODEV;
+ free(cas_pair);
return -errno;
}
+ free(cas_pair);
return rc;
}
diff --git a/libibumad/umad.h b/libibumad/umad.h
index 3ca436b..e56a132 100644
--- a/libibumad/umad.h
+++ b/libibumad/umad.h
@@ -116,7 +116,7 @@
#define SYS_IB_MAD_PORT "port"
#define SYS_IB_MAD_DEV "ibdev"
-#define UMAD_MAX_PORTS 64
+#define UMAD_MAX_PORTS 192
#define SYS_CA_PORTS_DIR "ports"
diff --git a/providers/efa/verbs.c b/providers/efa/verbs.c
index 09604a4..f7dd9bb 100644
--- a/providers/efa/verbs.c
+++ b/providers/efa/verbs.c
@@ -2923,7 +2923,7 @@
rdma_tracepoint(rdma_core_efa, post_send, qp->dev->name, ibvqpx->wr_id,
EFA_GET(&md->ctrl1, EFA_IO_TX_META_DESC_OP_TYPE),
ibvqpx->qp_base.qp_num, remote_qpn, ah->efa_ah,
- efa_wqe_get_data_length(qp->sq));
+ efa_wqe_get_data_length(&qp->sq));
}
static void efa_send_wr_set_processing_hints(struct efadv_qp *efadv_qp, uint32_t hints)
diff --git a/providers/rxe/rxe.c b/providers/rxe/rxe.c
index 423f834..fc91223 100644
--- a/providers/rxe/rxe.c
+++ b/providers/rxe/rxe.c
@@ -1102,6 +1102,7 @@
memcpy(data, buf_list->addr, length);
+ tot_length += length;
buf_list++;
data += length;
}
@@ -1138,6 +1139,7 @@
struct rxe_send_wqe *wqe = addr_from_index(qp->sq.queue,
qp->cur_index - 1);
size_t tot_length = 0;
+ size_t i;
if (qp->err)
return;
@@ -1150,8 +1152,8 @@
wqe->dma.num_sge = num_sge;
memcpy(wqe->dma.sge, sg_list, num_sge*sizeof(*sg_list));
- while (num_sge--)
- tot_length += sg_list->length;
+ for (i = 0; i < num_sge; i++)
+ tot_length += sg_list[i].length;
wqe->dma.length = tot_length;
wqe->dma.resid = tot_length;
@@ -1454,7 +1456,7 @@
/* basic sanity checks for send work request */
static int validate_send_wr(struct rxe_qp *qp, struct ibv_send_wr *ibwr,
- unsigned int length)
+ uint64_t length)
{
struct rxe_wq *sq = &qp->sq;
enum ibv_wr_opcode opcode = ibwr->opcode;
@@ -1593,7 +1595,7 @@
{
int err;
struct rxe_send_wqe *wqe;
- unsigned int length = 0;
+ uint64_t length = 0;
int i;
for (i = 0; i < ibwr->num_sge; i++)
diff --git a/suse/rdma-core.spec b/suse/rdma-core.spec
index 0606e04..03ae7f3 100644
--- a/suse/rdma-core.spec
+++ b/suse/rdma-core.spec
@@ -203,7 +203,6 @@
%package -n libibverbs
Summary: Library & drivers for direct userspace use of InfiniBand/iWARP/RoCE hardware
Group: System/Libraries
-Requires: %{name}%{?_isa} = %{version}-%{release}
Obsoletes: libcxgb4-rdmav2 < %{version}-%{release}
Obsoletes: libefa-rdmav2 < %{version}-%{release}
Obsoletes: libhfi1verbs-rdmav2 < %{version}-%{release}
@@ -530,38 +529,17 @@
rm -rf %{buildroot}/%{_initddir}/
rm -rf %{buildroot}/%{_sbindir}/srp_daemon.sh
-%post -n %verbs_lname -p /sbin/ldconfig
-%postun -n %verbs_lname -p /sbin/ldconfig
-
-%post -n %efa_lname -p /sbin/ldconfig
-%postun -n %efa_lname -p /sbin/ldconfig
-
-%post -n %hns_lname -p /sbin/ldconfig
-%postun -n %hns_lname -p /sbin/ldconfig
-
-%post -n %ionic_lname -p /sbin/ldconfig
-%postun -n %ionic_lname -p /sbin/ldconfig
-
-%post -n %mana_lname -p /sbin/ldconfig
-%postun -n %mana_lname -p /sbin/ldconfig
-
-%post -n %mlx4_lname -p /sbin/ldconfig
-%postun -n %mlx4_lname -p /sbin/ldconfig
-
-%post -n %mlx5_lname -p /sbin/ldconfig
-%postun -n %mlx5_lname -p /sbin/ldconfig
-
-%post -n %umad_lname -p /sbin/ldconfig
-%postun -n %umad_lname -p /sbin/ldconfig
-
-%post -n %rdmacm_lname -p /sbin/ldconfig
-%postun -n %rdmacm_lname -p /sbin/ldconfig
-
-%post -n libibnetdisc%{ibnetdisc_major} -p /sbin/ldconfig
-%postun -n libibnetdisc%{ibnetdisc_major} -p /sbin/ldconfig
-
-%post -n libibmad%{mad_major} -p /sbin/ldconfig
-%postun -n libibmad%{mad_major} -p /sbin/ldconfig
+%ldconfig_scriptlets -n %verbs_lname
+%ldconfig_scriptlets -n %efa_lname
+%ldconfig_scriptlets -n %hns_lname
+%ldconfig_scriptlets -n %ionic_lname
+%ldconfig_scriptlets -n %mana_lname
+%ldconfig_scriptlets -n %mlx4_lname
+%ldconfig_scriptlets -n %mlx5_lname
+%ldconfig_scriptlets -n %umad_lname
+%ldconfig_scriptlets -n %rdmacm_lname
+%ldconfig_scriptlets -n libibnetdisc%{ibnetdisc_major}
+%ldconfig_scriptlets -n libibmad%{mad_major}
%pre
# Avoid restoring outdated stuff in posttrans