aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/mlx5/qp.c
diff options
context:
space:
mode:
authorMaor Gottlieb <maorg@mellanox.com>2017-01-18 14:10:34 +0200
committerDoug Ledford <dledford@redhat.com>2017-02-14 10:14:25 -0500
commit1e0e50b6177bbc83e8cf673a29b2842c769f90f4 (patch)
tree0624901272043d807e35e60bad199c5c33e586fa /drivers/infiniband/hw/mlx5/qp.c
parentIB/mlx5: Add additional checks before processing MADs (diff)
downloadlinux-dev-1e0e50b6177bbc83e8cf673a29b2842c769f90f4.tar.xz
linux-dev-1e0e50b6177bbc83e8cf673a29b2842c769f90f4.zip
IB/mlx5: Avoid SMP MADs from VFs
According to the device specification, we need to check that the has_smi bit is set in vport context before allowing send SMP MADs from VF. Fixes: e126ba97dba9 ('mlx5: Add driver for Mellanox Connect-IB adapters') Signed-off-by: Maor Gottlieb <maorg@mellanox.com> Reviewed-by: Eli Cohen <eli@mellanox.com> Signed-off-by: Leon Romanovsky <leon@kernel.org> Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to '')
-rw-r--r--drivers/infiniband/hw/mlx5/qp.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c
index 90210745366a..9af9b953ce30 100644
--- a/drivers/infiniband/hw/mlx5/qp.c
+++ b/drivers/infiniband/hw/mlx5/qp.c
@@ -3979,6 +3979,12 @@ int mlx5_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
break;
case IB_QPT_SMI:
+ if (unlikely(!mdev->port_caps[qp->port - 1].has_smi)) {
+ mlx5_ib_warn(dev, "Send SMP MADs is not allowed\n");
+ err = -EPERM;
+ *bad_wr = wr;
+ goto out;
+ }
case MLX5_IB_QPT_HW_GSI:
set_datagram_seg(seg, wr);
seg += sizeof(struct mlx5_wqe_datagram_seg);