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_ketc...@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.
  */
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to