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)
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;
}
#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"
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;
}
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);
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);
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)
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;