summaryrefslogtreecommitdiff
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorJason Gunthorpe <jgg@nvidia.com>2026-03-25 18:26:52 -0300
committerLeon Romanovsky <leonro@nvidia.com>2026-03-31 03:11:01 -0400
commitc8f9a7a96e9a95e7b2bc3cc95371e0d75a5872ec (patch)
treeacbd19f88df7e5e9b7de9ee90a98236e7c768913 /drivers/infiniband
parent3268330fa84ff7bb678f86ee082116c1c5c150bb (diff)
downloadlwn-c8f9a7a96e9a95e7b2bc3cc95371e0d75a5872ec.tar.gz
lwn-c8f9a7a96e9a95e7b2bc3cc95371e0d75a5872ec.zip
RDMA/mlx5: Use ib_copy_validate_udata_in() for SRQ
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>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/hw/mlx5/srq.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/drivers/infiniband/hw/mlx5/srq.c b/drivers/infiniband/hw/mlx5/srq.c
index 17e018554d81..6d89c0242cab 100644
--- a/drivers/infiniband/hw/mlx5/srq.c
+++ b/drivers/infiniband/hw/mlx5/srq.c
@@ -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)