Like commit 641114d2af31 ("RDMA: Directly cast the sockaddr union to
sockaddr") we need to quiet gcc 9 from warning about this crazy union.
That commit did not fix all of the warnings in 4.19 and older kernels
because the logic in roce_resolve_route_from_path() was rewritten
between 4.19 and 5.2 when that change happened.

Cc: Jason Gunthorpe <j...@mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>
---
 drivers/infiniband/core/sa_query.c |   10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

--- a/drivers/infiniband/core/sa_query.c
+++ b/drivers/infiniband/core/sa_query.c
@@ -1263,7 +1263,6 @@ int ib_init_ah_from_path(struct ib_devic
                                &init_net
                };
                union {
-                       struct sockaddr     _sockaddr;
                        struct sockaddr_in  _sockaddr_in;
                        struct sockaddr_in6 _sockaddr_in6;
                } sgid_addr, dgid_addr;
@@ -1271,12 +1270,13 @@ int ib_init_ah_from_path(struct ib_devic
                if (!device->get_netdev)
                        return -EOPNOTSUPP;
 
-               rdma_gid2ip(&sgid_addr._sockaddr, &rec->sgid);
-               rdma_gid2ip(&dgid_addr._sockaddr, &rec->dgid);
+               rdma_gid2ip((struct sockaddr *)&sgid_addr, &rec->sgid);
+               rdma_gid2ip((struct sockaddr *)&dgid_addr, &rec->dgid);
 
                /* validate the route */
-               ret = rdma_resolve_ip_route(&sgid_addr._sockaddr,
-                                           &dgid_addr._sockaddr, &dev_addr);
+               ret = rdma_resolve_ip_route((struct sockaddr *)&sgid_addr,
+                                           (struct sockaddr *)&dgid_addr,
+                                           &dev_addr);
                if (ret)
                        return ret;
 


Reply via email to