4.9-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Eran Ben Elisha <era...@mellanox.com>

commit bf08e884bfd5be068fd2ccf2bc450f085d8dd853 upstream.

Before reading GRH attributes, need to make sure AH contains GRH,
and in addition, initialize GID type.

Fixes: dbf727de7440 ('IB/core: Use GID table in AH creation and dmac 
resolution')
Signed-off-by: Eran Ben Elisha <era...@mellanox.com>
Signed-off-by: Daniel Jurgens <dani...@mellanox.com>
Reviewed-by: Mark Bloch <ma...@mellanox.com>
Signed-off-by: Leon Romanovsky <l...@kernel.org>
Signed-off-by: Doug Ledford <dledf...@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>

---
 drivers/infiniband/hw/mlx4/qp.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -1765,14 +1765,14 @@ static int __mlx4_ib_modify_qp(struct ib
                u8 port_num = mlx4_is_bonded(to_mdev(ibqp->device)->dev) ? 1 :
                        attr_mask & IB_QP_PORT ? attr->port_num : qp->port;
                union ib_gid gid;
-               struct ib_gid_attr gid_attr;
+               struct ib_gid_attr gid_attr = {.gid_type = IB_GID_TYPE_IB};
                u16 vlan = 0xffff;
                u8 smac[ETH_ALEN];
                int status = 0;
                int is_eth = rdma_cap_eth_ah(&dev->ib_dev, port_num) &&
                        attr->ah_attr.ah_flags & IB_AH_GRH;
 
-               if (is_eth) {
+               if (is_eth && attr->ah_attr.ah_flags & IB_AH_GRH) {
                        int index = attr->ah_attr.grh.sgid_index;
 
                        status = ib_get_cached_gid(ibqp->device, port_num,


Reply via email to