diff options
author | Maor Gottlieb <maorg@mellanox.com> | 2017-01-18 13:10:34 +0100 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2017-02-14 16:14:25 +0100 |
commit | 1e0e50b6177bbc83e8cf673a29b2842c769f90f4 (patch) | |
tree | 0624901272043d807e35e60bad199c5c33e586fa | |
parent | IB/mlx5: Add additional checks before processing MADs (diff) | |
download | linux-1e0e50b6177bbc83e8cf673a29b2842c769f90f4.tar.xz linux-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>
-rw-r--r-- | drivers/infiniband/hw/mlx5/qp.c | 6 |
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); |