svn commit: r364997 - in head/sys/ofed: drivers/infiniband/core include/rdma
Eric van Gyzen
vangyzen at FreeBSD.org
Mon Aug 31 16:17:30 UTC 2020
Author: vangyzen
Date: Mon Aug 31 16:17:28 2020
New Revision: 364997
URL: https://svnweb.freebsd.org/changeset/base/364997
Log:
infiniband: Appease Coverty
Coverity claims the call to rdma_gid2ip in cma_igmp_send overwrites addr.
Use a consistent definition of sockaddr to prevent detections and code
changes in the future.
Submitted by: bret_ketchum at dell.com
Reported by: Coverity
Reviewed by: hselasky, kib
MFC after: 2 weeks
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D26229
Modified:
head/sys/ofed/drivers/infiniband/core/ib_addr.c
head/sys/ofed/drivers/infiniband/core/ib_cma.c
head/sys/ofed/drivers/infiniband/core/ib_sa_query.c
head/sys/ofed/include/rdma/ib_addr.h
Modified: head/sys/ofed/drivers/infiniband/core/ib_addr.c
==============================================================================
--- head/sys/ofed/drivers/infiniband/core/ib_addr.c Mon Aug 31 16:07:40 2020 (r364996)
+++ head/sys/ofed/drivers/infiniband/core/ib_addr.c Mon Aug 31 16:17:28 2020 (r364997)
@@ -860,11 +860,7 @@ int rdma_addr_find_l2_eth_by_grh(const union ib_gid *s
struct rdma_dev_addr dev_addr;
struct resolve_cb_context ctx;
- union {
- struct sockaddr _sockaddr;
- struct sockaddr_in _sockaddr_in;
- struct sockaddr_in6 _sockaddr_in6;
- } sgid_addr, dgid_addr;
+ union rdma_sockaddr sgid_addr, dgid_addr;
rdma_gid2ip(&sgid_addr._sockaddr, sgid);
rdma_gid2ip(&dgid_addr._sockaddr, dgid);
Modified: head/sys/ofed/drivers/infiniband/core/ib_cma.c
==============================================================================
--- head/sys/ofed/drivers/infiniband/core/ib_cma.c Mon Aug 31 16:07:40 2020 (r364996)
+++ head/sys/ofed/drivers/infiniband/core/ib_cma.c Mon Aug 31 16:17:28 2020 (r364997)
@@ -450,18 +450,15 @@ static int cma_igmp_send(struct net_device *ndev, cons
int retval;
if (ndev) {
- union {
- struct sockaddr sock;
- struct sockaddr_storage storage;
- } addr;
+ union rdma_sockaddr addr;
- rdma_gid2ip(&addr.sock, mgid);
+ rdma_gid2ip(&addr._sockaddr, mgid);
CURVNET_SET_QUIET(ndev->if_vnet);
if (join)
- retval = -if_addmulti(ndev, &addr.sock, NULL);
+ retval = -if_addmulti(ndev, &addr._sockaddr, NULL);
else
- retval = -if_delmulti(ndev, &addr.sock);
+ retval = -if_delmulti(ndev, &addr._sockaddr);
CURVNET_RESTORE();
} else {
retval = -ENODEV;
Modified: head/sys/ofed/drivers/infiniband/core/ib_sa_query.c
==============================================================================
--- head/sys/ofed/drivers/infiniband/core/ib_sa_query.c Mon Aug 31 16:07:40 2020 (r364996)
+++ head/sys/ofed/drivers/infiniband/core/ib_sa_query.c Mon Aug 31 16:17:28 2020 (r364997)
@@ -668,11 +668,7 @@ int ib_init_ah_from_path(struct ib_device *device, u8
struct rdma_dev_addr dev_addr = {.bound_dev_if = rec->ifindex,
.net = rec->net ? rec->net :
&init_net};
- union {
- struct sockaddr _sockaddr;
- struct sockaddr_in _sockaddr_in;
- struct sockaddr_in6 _sockaddr_in6;
- } sgid_addr, dgid_addr;
+ union rdma_sockaddr sgid_addr, dgid_addr;
if (!device->get_netdev)
return -EOPNOTSUPP;
Modified: head/sys/ofed/include/rdma/ib_addr.h
==============================================================================
--- head/sys/ofed/include/rdma/ib_addr.h Mon Aug 31 16:07:40 2020 (r364996)
+++ head/sys/ofed/include/rdma/ib_addr.h Mon Aug 31 16:17:28 2020 (r364997)
@@ -57,6 +57,13 @@ struct rdma_addr_client {
struct completion comp;
};
+union rdma_sockaddr {
+ struct sockaddr _sockaddr;
+ struct sockaddr_in _sockaddr_in;
+ struct sockaddr_in6 _sockaddr_in6;
+ struct sockaddr_storage _sockaddr_ss;
+};
+
/**
* rdma_addr_register_client - Register an address client.
*/
More information about the svn-src-all
mailing list