]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
RDMA/mlx5: Use ib_copy_validate_udata_in() for SRQ
authorJason Gunthorpe <jgg@nvidia.com>
Wed, 25 Mar 2026 21:26:52 +0000 (18:26 -0300)
committerLeon Romanovsky <leonro@nvidia.com>
Tue, 31 Mar 2026 07:11:01 +0000 (03:11 -0400)
flags is the last member for mlx5_ib_create_srq, the uidx is a
later extension.

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

index 17e018554d81d5477a773a739c3888d4f1fbd032..6d89c0242cab6117287e5d50118f3542eef080ac 100644 (file)
@@ -48,25 +48,16 @@ static int create_srq_user(struct ib_pd *pd, struct mlx5_ib_srq *srq,
        struct mlx5_ib_create_srq ucmd = {};
        struct mlx5_ib_ucontext *ucontext = rdma_udata_to_drv_context(
                udata, struct mlx5_ib_ucontext, ibucontext);
-       size_t ucmdlen;
        int err;
        u32 uidx = MLX5_IB_DEFAULT_UIDX;
 
-       ucmdlen = min(udata->inlen, sizeof(ucmd));
-
-       if (ib_copy_from_udata(&ucmd, udata, ucmdlen)) {
-               mlx5_ib_dbg(dev, "failed copy udata\n");
-               return -EFAULT;
-       }
+       err = ib_copy_validate_udata_in(udata, ucmd, flags);
+       if (err)
+               return err;
 
        if (ucmd.reserved0 || ucmd.reserved1)
                return -EINVAL;
 
-       if (udata->inlen > sizeof(ucmd) &&
-           !ib_is_udata_cleared(udata, sizeof(ucmd),
-                                udata->inlen - sizeof(ucmd)))
-               return -EINVAL;
-
        if (in->type != IB_SRQT_BASIC) {
                err = get_srq_user_index(ucontext, &ucmd, udata->inlen, &uidx);
                if (err)