]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
RDMA/mlx5: Pull comp_mask validation into ib_copy_validate_udata_in_cm()
authorJason Gunthorpe <jgg@nvidia.com>
Wed, 25 Mar 2026 21:26:58 +0000 (18:26 -0300)
committerLeon Romanovsky <leonro@nvidia.com>
Tue, 31 Mar 2026 07:18:16 +0000 (03:18 -0400)
Directly check the supported comp_mask bitmap using
ib_copy_validate_udata_in_cm() and remove the open coding.

Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
drivers/infiniband/hw/mlx5/qp.c

index 68c6e107747693d69cb85beeba3e76bc30de6968..3b602ed0a2dafc79d71dacfcd22a5b1eca2f6b6e 100644 (file)
@@ -4707,12 +4707,12 @@ int mlx5_ib_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
                return -ENOSYS;
 
        if (udata && udata->inlen) {
-               err = ib_copy_validate_udata_in(udata, ucmd, ece_options);
+               err = ib_copy_validate_udata_in_cm(udata, ucmd, ece_options,
+                                                  MLX5_IB_MODIFY_QP_OOO_DP);
                if (err)
                        return err;
 
-               if (ucmd.comp_mask & ~MLX5_IB_MODIFY_QP_OOO_DP ||
-                   memchr_inv(&ucmd.burst_info.reserved, 0,
+               if (memchr_inv(&ucmd.burst_info.reserved, 0,
                               sizeof(ucmd.burst_info.reserved)))
                        return -EOPNOTSUPP;
 
@@ -5381,17 +5381,16 @@ static int prepare_user_rq(struct ib_pd *pd,
        struct mlx5_ib_dev *dev = to_mdev(pd->device);
        struct mlx5_ib_create_wq ucmd = {};
        int err;
-       err = ib_copy_validate_udata_in(udata, ucmd,
-                                       single_stride_log_num_of_bytes);
+
+       err = ib_copy_validate_udata_in_cm(udata, ucmd,
+                                          single_stride_log_num_of_bytes,
+                                          MLX5_IB_CREATE_WQ_STRIDING_RQ);
        if (err) {
                mlx5_ib_dbg(dev, "copy failed\n");
                return err;
        }
 
-       if (ucmd.comp_mask & (~MLX5_IB_CREATE_WQ_STRIDING_RQ)) {
-               mlx5_ib_dbg(dev, "invalid comp mask\n");
-               return -EOPNOTSUPP;
-       } else if (ucmd.comp_mask & MLX5_IB_CREATE_WQ_STRIDING_RQ) {
+       if (ucmd.comp_mask & MLX5_IB_CREATE_WQ_STRIDING_RQ) {
                if (!MLX5_CAP_GEN(dev->mdev, striding_rq)) {
                        mlx5_ib_dbg(dev, "Striding RQ is not supported\n");
                        return -EOPNOTSUPP;