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 <[email protected]>
---
 drivers/infiniband/hw/efa/efa_verbs.c |  8 ++++----
 drivers/infiniband/hw/mlx4/main.c     |  5 +----
 drivers/infiniband/hw/mlx4/qp.c       | 13 ++++++-------
 drivers/infiniband/hw/mlx5/mr.c       |  4 ++--
 drivers/infiniband/hw/mlx5/qp.c       |  4 ++--
 5 files changed, 15 insertions(+), 19 deletions(-)

diff --git a/drivers/infiniband/hw/efa/efa_verbs.c 
b/drivers/infiniband/hw/efa/efa_verbs.c
index 22993273028433..b491bcd886ccb0 100644
--- a/drivers/infiniband/hw/efa/efa_verbs.c
+++ b/drivers/infiniband/hw/efa/efa_verbs.c
@@ -699,11 +699,11 @@ int efa_create_qp(struct ib_qp *ibqp, struct 
ib_qp_init_attr *init_attr,
        if (err)
                goto err_out;
 
-       err = ib_copy_validate_udata_in(udata, cmd, driver_qp_type);
+       err = ib_copy_validate_udata_in_cm(udata, cmd, driver_qp_type, 0);
        if (err)
                goto err_out;
 
-       if (cmd.comp_mask || !is_reserved_cleared(cmd.reserved_98)) {
+       if (!is_reserved_cleared(cmd.reserved_98)) {
                ibdev_dbg(&dev->ibdev,
                          "Incompatible ABI params, unknown fields in udata\n");
                err = -EINVAL;
@@ -1140,11 +1140,11 @@ int efa_create_user_cq(struct ib_cq *ibcq, const struct 
ib_cq_init_attr *attr,
                goto err_out;
        }
 
-       err = ib_copy_validate_udata_in(udata, cmd, num_sub_cqs);
+       err = ib_copy_validate_udata_in_cm(udata, cmd, num_sub_cqs, 0);
        if (err)
                goto err_out;
 
-       if (cmd.comp_mask || !is_reserved_cleared(cmd.reserved_58)) {
+       if (!is_reserved_cleared(cmd.reserved_58)) {
                ibdev_dbg(ibdev,
                          "Incompatible ABI params, unknown fields in udata\n");
                err = -EINVAL;
diff --git a/drivers/infiniband/hw/mlx4/main.c 
b/drivers/infiniband/hw/mlx4/main.c
index 16e4cffbd7a84d..037f02b5f28fb5 100644
--- a/drivers/infiniband/hw/mlx4/main.c
+++ b/drivers/infiniband/hw/mlx4/main.c
@@ -446,13 +446,10 @@ static int mlx4_ib_query_device(struct ib_device *ibdev,
        struct mlx4_clock_params clock_params;
 
        if (uhw->inlen) {
-               err = ib_copy_validate_udata_in(uhw, cmd, reserved);
+               err = ib_copy_validate_udata_in_cm(uhw, cmd, reserved, 0);
                if (err)
                        return err;
 
-               if (cmd.comp_mask)
-                       return -EINVAL;
-
                if (cmd.reserved)
                        return -EINVAL;
        }
diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index 40ddd723d7b549..cfb54ffcaac22c 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -720,7 +720,7 @@ static int _mlx4_ib_create_qp_rss(struct ib_pd *pd, struct 
mlx4_ib_qp *qp,
        if (udata->outlen)
                return -EOPNOTSUPP;
 
-       err = ib_copy_validate_udata_in(udata, ucmd, reserved1);
+       err = ib_copy_validate_udata_in_cm(udata, ucmd, reserved1, 0);
        if (err) {
                pr_debug("copy failed\n");
                return err;
@@ -729,7 +729,7 @@ static int _mlx4_ib_create_qp_rss(struct ib_pd *pd, struct 
mlx4_ib_qp *qp,
        if (memchr_inv(ucmd.reserved, 0, sizeof(ucmd.reserved)))
                return -EOPNOTSUPP;
 
-       if (ucmd.comp_mask || ucmd.reserved1)
+       if (ucmd.reserved1)
                return -EOPNOTSUPP;
 
        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,
 
        qp->state = IB_QPS_RESET;
 
-       err = ib_copy_validate_udata_in(udata, wq, comp_mask);
+       err = ib_copy_validate_udata_in_cm(udata, wq, comp_mask, 0);
        if (err)
                goto err;
 
-       if (wq.comp_mask || wq.reserved[0] || wq.reserved[1] ||
-           wq.reserved[2]) {
+       if (wq.reserved[0] || wq.reserved[1] || wq.reserved[2]) {
                pr_debug("user command isn't supported\n");
                err = -EOPNOTSUPP;
                goto err;
@@ -4235,11 +4234,11 @@ int mlx4_ib_modify_wq(struct ib_wq *ibwq, struct 
ib_wq_attr *wq_attr,
        enum ib_wq_state cur_state, new_state;
        int err;
 
-       err = ib_copy_validate_udata_in(udata, ucmd, reserved);
+       err = ib_copy_validate_udata_in_cm(udata, ucmd, reserved, 0);
        if (err)
                return err;
 
-       if (ucmd.comp_mask || ucmd.reserved)
+       if (ucmd.reserved)
                return -EOPNOTSUPP;
 
        if (wq_attr_mask & IB_WQ_FLAGS)
diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c
index fce519b87633ef..49dcc39836c047 100644
--- a/drivers/infiniband/hw/mlx5/mr.c
+++ b/drivers/infiniband/hw/mlx5/mr.c
@@ -1774,11 +1774,11 @@ int mlx5_ib_alloc_mw(struct ib_mw *ibmw, struct 
ib_udata *udata)
                __u32   response_length;
        } resp = {};
 
-       err = ib_copy_validate_udata_in(udata, req, reserved2);
+       err = ib_copy_validate_udata_in_cm(udata, req, reserved2, 0);
        if (err)
                return err;
 
-       if (req.comp_mask || req.reserved1 || req.reserved2)
+       if (req.reserved1 || req.reserved2)
                return -EOPNOTSUPP;
 
        ndescs = req.num_klms ? roundup(req.num_klms, 4) : roundup(1, 4);
diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c
index d4d5e0d457a0b5..68c6e107747693 100644
--- a/drivers/infiniband/hw/mlx5/qp.c
+++ b/drivers/infiniband/hw/mlx5/qp.c
@@ -5611,11 +5611,11 @@ int mlx5_ib_modify_wq(struct ib_wq *wq, struct 
ib_wq_attr *wq_attr,
        void *rqc;
        void *in;
 
-       err = ib_copy_validate_udata_in(udata, ucmd, reserved);
+       err = ib_copy_validate_udata_in_cm(udata, ucmd, reserved, 0);
        if (err)
                return err;
 
-       if (ucmd.comp_mask || ucmd.reserved)
+       if (ucmd.reserved)
                return -EOPNOTSUPP;
 
        inlen = MLX5_ST_SZ_BYTES(modify_rq_in);
-- 
2.43.0


Reply via email to