Skip to content

Commit 604caeb

Browse files
jgunthorperleon
authored andcommitted
RDMA: Use ib_copy_validate_udata_in_cm() for zero comp_mask
All of these cases require a 0 comp_mask. Consolidate these into using ib_copy_validate_udata_in_cm() and remove the open coded comp_mask test. Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
1 parent d5c8f2f commit 604caeb

4 files changed

Lines changed: 13 additions & 17 deletions

File tree

drivers/infiniband/hw/efa/efa_verbs.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -699,11 +699,11 @@ int efa_create_qp(struct ib_qp *ibqp, struct ib_qp_init_attr *init_attr,
699699
if (err)
700700
goto err_out;
701701

702-
err = ib_copy_validate_udata_in(udata, cmd, driver_qp_type);
702+
err = ib_copy_validate_udata_in_cm(udata, cmd, driver_qp_type, 0);
703703
if (err)
704704
goto err_out;
705705

706-
if (cmd.comp_mask || !is_reserved_cleared(cmd.reserved_98)) {
706+
if (!is_reserved_cleared(cmd.reserved_98)) {
707707
ibdev_dbg(&dev->ibdev,
708708
"Incompatible ABI params, unknown fields in udata\n");
709709
err = -EINVAL;
@@ -1140,11 +1140,11 @@ int efa_create_user_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
11401140
goto err_out;
11411141
}
11421142

1143-
err = ib_copy_validate_udata_in(udata, cmd, num_sub_cqs);
1143+
err = ib_copy_validate_udata_in_cm(udata, cmd, num_sub_cqs, 0);
11441144
if (err)
11451145
goto err_out;
11461146

1147-
if (cmd.comp_mask || !is_reserved_cleared(cmd.reserved_58)) {
1147+
if (!is_reserved_cleared(cmd.reserved_58)) {
11481148
ibdev_dbg(ibdev,
11491149
"Incompatible ABI params, unknown fields in udata\n");
11501150
err = -EINVAL;

drivers/infiniband/hw/mlx4/main.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -446,13 +446,10 @@ static int mlx4_ib_query_device(struct ib_device *ibdev,
446446
struct mlx4_clock_params clock_params;
447447

448448
if (uhw->inlen) {
449-
err = ib_copy_validate_udata_in(uhw, cmd, reserved);
449+
err = ib_copy_validate_udata_in_cm(uhw, cmd, reserved, 0);
450450
if (err)
451451
return err;
452452

453-
if (cmd.comp_mask)
454-
return -EINVAL;
455-
456453
if (cmd.reserved)
457454
return -EINVAL;
458455
}

drivers/infiniband/hw/mlx4/qp.c

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -720,7 +720,7 @@ static int _mlx4_ib_create_qp_rss(struct ib_pd *pd, struct mlx4_ib_qp *qp,
720720
if (udata->outlen)
721721
return -EOPNOTSUPP;
722722

723-
err = ib_copy_validate_udata_in(udata, ucmd, reserved1);
723+
err = ib_copy_validate_udata_in_cm(udata, ucmd, reserved1, 0);
724724
if (err) {
725725
pr_debug("copy failed\n");
726726
return err;
@@ -729,7 +729,7 @@ static int _mlx4_ib_create_qp_rss(struct ib_pd *pd, struct mlx4_ib_qp *qp,
729729
if (memchr_inv(ucmd.reserved, 0, sizeof(ucmd.reserved)))
730730
return -EOPNOTSUPP;
731731

732-
if (ucmd.comp_mask || ucmd.reserved1)
732+
if (ucmd.reserved1)
733733
return -EOPNOTSUPP;
734734

735735
if (init_attr->qp_type != IB_QPT_RAW_PACKET) {
@@ -866,12 +866,11 @@ static int create_rq(struct ib_pd *pd, struct ib_qp_init_attr *init_attr,
866866

867867
qp->state = IB_QPS_RESET;
868868

869-
err = ib_copy_validate_udata_in(udata, wq, comp_mask);
869+
err = ib_copy_validate_udata_in_cm(udata, wq, comp_mask, 0);
870870
if (err)
871871
goto err;
872872

873-
if (wq.comp_mask || wq.reserved[0] || wq.reserved[1] ||
874-
wq.reserved[2]) {
873+
if (wq.reserved[0] || wq.reserved[1] || wq.reserved[2]) {
875874
pr_debug("user command isn't supported\n");
876875
err = -EOPNOTSUPP;
877876
goto err;
@@ -4235,11 +4234,11 @@ int mlx4_ib_modify_wq(struct ib_wq *ibwq, struct ib_wq_attr *wq_attr,
42354234
enum ib_wq_state cur_state, new_state;
42364235
int err;
42374236

4238-
err = ib_copy_validate_udata_in(udata, ucmd, reserved);
4237+
err = ib_copy_validate_udata_in_cm(udata, ucmd, reserved, 0);
42394238
if (err)
42404239
return err;
42414240

4242-
if (ucmd.comp_mask || ucmd.reserved)
4241+
if (ucmd.reserved)
42434242
return -EOPNOTSUPP;
42444243

42454244
if (wq_attr_mask & IB_WQ_FLAGS)

drivers/infiniband/hw/mlx5/qp.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5611,11 +5611,11 @@ int mlx5_ib_modify_wq(struct ib_wq *wq, struct ib_wq_attr *wq_attr,
56115611
void *rqc;
56125612
void *in;
56135613

5614-
err = ib_copy_validate_udata_in(udata, ucmd, reserved);
5614+
err = ib_copy_validate_udata_in_cm(udata, ucmd, reserved, 0);
56155615
if (err)
56165616
return err;
56175617

5618-
if (ucmd.comp_mask || ucmd.reserved)
5618+
if (ucmd.reserved)
56195619
return -EOPNOTSUPP;
56205620

56215621
inlen = MLX5_ST_SZ_BYTES(modify_rq_in);

0 commit comments

Comments
 (0)