aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/core/verbs.c
diff options
context:
space:
mode:
authorArtemy Kovalyov <artemyko@mellanox.com>2018-07-04 15:57:50 +0300
committerJason Gunthorpe <jgg@mellanox.com>2018-07-10 11:13:04 -0600
commitb02289b3d60f79ba0831051a7743d8fdb4110355 (patch)
treeab40813ac166eb65344774f68d18d8bf313a076d /drivers/infiniband/core/verbs.c
parentRDMA/hfi1: Move grh_required into update_sm_ah (diff)
downloadlinux-dev-b02289b3d60f79ba0831051a7743d8fdb4110355.tar.xz
linux-dev-b02289b3d60f79ba0831051a7743d8fdb4110355.zip
RDMA: Validate grh_required when handling AVs
Extend the existing grh_required flag to check when AV's are handled that a GRH is present. Since we don't want to do query_port during the AV checks for performance reasons move the flag into the immutable_data. Signed-off-by: Artemy Kovalyov <artemyko@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Diffstat (limited to '')
-rw-r--r--drivers/infiniband/core/verbs.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c
index 1bb6b6ff3341..b6ceb6fd6a67 100644
--- a/drivers/infiniband/core/verbs.c
+++ b/drivers/infiniband/core/verbs.c
@@ -390,7 +390,8 @@ static int rdma_check_ah_attr(struct ib_device *device,
if (!rdma_is_port_valid(device, ah_attr->port_num))
return -EINVAL;
- if (ah_attr->type == RDMA_AH_ATTR_TYPE_ROCE &&
+ if ((rdma_is_grh_required(device, ah_attr->port_num) ||
+ ah_attr->type == RDMA_AH_ATTR_TYPE_ROCE) &&
!(ah_attr->ah_flags & IB_AH_GRH))
return -EINVAL;