Follow the last struct member from the commit when the struct was
added to the kernel.

Signed-off-by: Jason Gunthorpe <[email protected]>
---
 drivers/infiniband/hw/hns/hns_roce_cq.c   | 16 +--------------
 drivers/infiniband/hw/hns/hns_roce_main.c |  4 ++--
 drivers/infiniband/hw/hns/hns_roce_qp.c   |  8 ++------
 drivers/infiniband/hw/hns/hns_roce_srq.c  | 25 +++--------------------
 4 files changed, 8 insertions(+), 45 deletions(-)

diff --git a/drivers/infiniband/hw/hns/hns_roce_cq.c 
b/drivers/infiniband/hw/hns/hns_roce_cq.c
index 857a913326cd88..621568e114054b 100644
--- a/drivers/infiniband/hw/hns/hns_roce_cq.c
+++ b/drivers/infiniband/hw/hns/hns_roce_cq.c
@@ -350,20 +350,6 @@ static int verify_cq_create_attr(struct hns_roce_dev 
*hr_dev,
        return 0;
 }
 
-static int get_cq_ucmd(struct hns_roce_cq *hr_cq, struct ib_udata *udata,
-                      struct hns_roce_ib_create_cq *ucmd)
-{
-       struct ib_device *ibdev = hr_cq->ib_cq.device;
-       int ret;
-
-       ret = ib_copy_from_udata(ucmd, udata, min(udata->inlen, sizeof(*ucmd)));
-       if (ret) {
-               ibdev_err(ibdev, "failed to copy CQ udata, ret = %d.\n", ret);
-               return ret;
-       }
-
-       return 0;
-}
 
 static void set_cq_param(struct hns_roce_cq *hr_cq, u32 cq_entries, int vector,
                         struct hns_roce_ib_create_cq *ucmd)
@@ -428,7 +414,7 @@ int hns_roce_create_cq(struct ib_cq *ib_cq, const struct 
ib_cq_init_attr *attr,
                goto err_out;
 
        if (udata) {
-               ret = get_cq_ucmd(hr_cq, udata, &ucmd);
+               ret = ib_copy_validate_udata_in(udata, ucmd, db_addr);
                if (ret)
                        goto err_out;
        }
diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c 
b/drivers/infiniband/hw/hns/hns_roce_main.c
index 1148d732f94fbf..ec6fb3f1177941 100644
--- a/drivers/infiniband/hw/hns/hns_roce_main.c
+++ b/drivers/infiniband/hw/hns/hns_roce_main.c
@@ -36,6 +36,7 @@
 #include <rdma/ib_smi.h>
 #include <rdma/ib_user_verbs.h>
 #include <rdma/ib_cache.h>
+#include <rdma/uverbs_ioctl.h>
 #include "hns_roce_common.h"
 #include "hns_roce_device.h"
 #include "hns_roce_hem.h"
@@ -433,8 +434,7 @@ static int hns_roce_alloc_ucontext(struct ib_ucontext *uctx,
        resp.qp_tab_size = hr_dev->caps.num_qps;
        resp.srq_tab_size = hr_dev->caps.num_srqs;
 
-       ret = ib_copy_from_udata(&ucmd, udata,
-                                min(udata->inlen, sizeof(ucmd)));
+       ret = ib_copy_validate_udata_in(udata, ucmd, reserved);
        if (ret)
                goto error_out;
 
diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c 
b/drivers/infiniband/hw/hns/hns_roce_qp.c
index 6a2dff4bd2d0fc..3d6eb22cbcd940 100644
--- a/drivers/infiniband/hw/hns/hns_roce_qp.c
+++ b/drivers/infiniband/hw/hns/hns_roce_qp.c
@@ -1130,13 +1130,9 @@ static int set_qp_param(struct hns_roce_dev *hr_dev, 
struct hns_roce_qp *hr_qp,
        }
 
        if (udata) {
-               ret = ib_copy_from_udata(ucmd, udata,
-                                        min(udata->inlen, sizeof(*ucmd)));
-               if (ret) {
-                       ibdev_err(ibdev,
-                                 "failed to copy QP ucmd, ret = %d\n", ret);
+               ret = ib_copy_validate_udata_in(udata, *ucmd, reserved);
+               if (ret)
                        return ret;
-               }
 
                uctx = rdma_udata_to_drv_context(udata, struct 
hns_roce_ucontext,
                                                 ibucontext);
diff --git a/drivers/infiniband/hw/hns/hns_roce_srq.c 
b/drivers/infiniband/hw/hns/hns_roce_srq.c
index 8a6efb6b9c9eba..b37a76587aa868 100644
--- a/drivers/infiniband/hw/hns/hns_roce_srq.c
+++ b/drivers/infiniband/hw/hns/hns_roce_srq.c
@@ -346,14 +346,9 @@ static int alloc_srq_buf(struct hns_roce_dev *hr_dev, 
struct hns_roce_srq *srq,
        int ret;
 
        if (udata) {
-               ret = ib_copy_from_udata(&ucmd, udata,
-                                        min(udata->inlen, sizeof(ucmd)));
-               if (ret) {
-                       ibdev_err(&hr_dev->ib_dev,
-                                 "failed to copy SRQ udata, ret = %d.\n",
-                                 ret);
+               ret = ib_copy_validate_udata_in(udata, ucmd, que_addr);
+               if (ret)
                        return ret;
-               }
        }
 
        ret = alloc_srq_idx(hr_dev, srq, udata, ucmd.que_addr);
@@ -387,20 +382,6 @@ static void free_srq_buf(struct hns_roce_dev *hr_dev, 
struct hns_roce_srq *srq)
        free_srq_idx(hr_dev, srq);
 }
 
-static int get_srq_ucmd(struct hns_roce_srq *srq, struct ib_udata *udata,
-                       struct hns_roce_ib_create_srq *ucmd)
-{
-       struct ib_device *ibdev = srq->ibsrq.device;
-       int ret;
-
-       ret = ib_copy_from_udata(ucmd, udata, min(udata->inlen, sizeof(*ucmd)));
-       if (ret) {
-               ibdev_err(ibdev, "failed to copy SRQ udata, ret = %d.\n", ret);
-               return ret;
-       }
-
-       return 0;
-}
 
 static void free_srq_db(struct hns_roce_dev *hr_dev, struct hns_roce_srq *srq,
                        struct ib_udata *udata)
@@ -430,7 +411,7 @@ static int alloc_srq_db(struct hns_roce_dev *hr_dev, struct 
hns_roce_srq *srq,
        int ret;
 
        if (udata) {
-               ret = get_srq_ucmd(srq, udata, &ucmd);
+               ret = ib_copy_validate_udata_in(udata, ucmd, que_addr);
                if (ret)
                        return ret;
 
-- 
2.43.0


Reply via email to