RDMA: Use u64_to_user_ptr everywhere
authorJason Gunthorpe <jgg@mellanox.com>
Tue, 27 Mar 2018 20:18:47 +0000 (14:18 -0600)
committerJason Gunthorpe <jgg@mellanox.com>
Thu, 29 Mar 2018 19:42:29 +0000 (13:42 -0600)
This is already used in many places, get the rest of them too, only
to make the code a bit clearer & simpler.

Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/ucm.c
drivers/infiniband/core/ucma.c
drivers/infiniband/core/uverbs_cmd.c
drivers/infiniband/hw/hfi1/user_exp_rcv.c
drivers/infiniband/hw/qib/qib_diag.c
drivers/infiniband/hw/qib/qib_file_ops.c

index 01702265c1e1a5175f05499c66f1ebe046a06e21..9eef96dacbd7df8bc605d3961a535c2a89a32f56 100644 (file)
@@ -430,7 +430,7 @@ static ssize_t ib_ucm_event(struct ib_ucm_file *file,
                uevent->resp.id = ctx->id;
        }
 
-       if (copy_to_user((void __user *)(unsigned long)cmd.response,
+       if (copy_to_user(u64_to_user_ptr(cmd.response),
                         &uevent->resp, sizeof(uevent->resp))) {
                result = -EFAULT;
                goto done;
@@ -441,7 +441,7 @@ static ssize_t ib_ucm_event(struct ib_ucm_file *file,
                        result = -ENOMEM;
                        goto done;
                }
-               if (copy_to_user((void __user *)(unsigned long)cmd.data,
+               if (copy_to_user(u64_to_user_ptr(cmd.data),
                                 uevent->data, uevent->data_len)) {
                        result = -EFAULT;
                        goto done;
@@ -453,7 +453,7 @@ static ssize_t ib_ucm_event(struct ib_ucm_file *file,
                        result = -ENOMEM;
                        goto done;
                }
-               if (copy_to_user((void __user *)(unsigned long)cmd.info,
+               if (copy_to_user(u64_to_user_ptr(cmd.info),
                                 uevent->info, uevent->info_len)) {
                        result = -EFAULT;
                        goto done;
@@ -502,7 +502,7 @@ static ssize_t ib_ucm_create_id(struct ib_ucm_file *file,
        }
 
        resp.id = ctx->id;
-       if (copy_to_user((void __user *)(unsigned long)cmd.response,
+       if (copy_to_user(u64_to_user_ptr(cmd.response),
                         &resp, sizeof(resp))) {
                result = -EFAULT;
                goto err2;
@@ -556,7 +556,7 @@ static ssize_t ib_ucm_destroy_id(struct ib_ucm_file *file,
        ib_ucm_cleanup_events(ctx);
 
        resp.events_reported = ctx->events_reported;
-       if (copy_to_user((void __user *)(unsigned long)cmd.response,
+       if (copy_to_user(u64_to_user_ptr(cmd.response),
                         &resp, sizeof(resp)))
                result = -EFAULT;
 
@@ -588,7 +588,7 @@ static ssize_t ib_ucm_attr_id(struct ib_ucm_file *file,
        resp.local_id     = ctx->cm_id->local_id;
        resp.remote_id    = ctx->cm_id->remote_id;
 
-       if (copy_to_user((void __user *)(unsigned long)cmd.response,
+       if (copy_to_user(u64_to_user_ptr(cmd.response),
                         &resp, sizeof(resp)))
                result = -EFAULT;
 
@@ -625,7 +625,7 @@ static ssize_t ib_ucm_init_qp_attr(struct ib_ucm_file *file,
 
        ib_copy_qp_attr_to_user(ctx->cm_id->device, &resp, &qp_attr);
 
-       if (copy_to_user((void __user *)(unsigned long)cmd.response,
+       if (copy_to_user(u64_to_user_ptr(cmd.response),
                         &resp, sizeof(resp)))
                result = -EFAULT;
 
@@ -699,7 +699,7 @@ static int ib_ucm_alloc_data(const void **dest, u64 src, u32 len)
        if (!len)
                return 0;
 
-       data = memdup_user((void __user *)(unsigned long)src, len);
+       data = memdup_user(u64_to_user_ptr(src), len);
        if (IS_ERR(data))
                return PTR_ERR(data);
 
@@ -721,7 +721,7 @@ static int ib_ucm_path_get(struct sa_path_rec **path, u64 src)
        if (!sa_path)
                return -ENOMEM;
 
-       if (copy_from_user(&upath, (void __user *)(unsigned long)src,
+       if (copy_from_user(&upath, u64_to_user_ptr(src),
                           sizeof(upath))) {
 
                kfree(sa_path);
index db4190b2ed27416d1ca379076e79825f0d86c271..2abb70c26559b9e99a9d0a3e53515267d687c3ee 100644 (file)
@@ -420,7 +420,7 @@ static ssize_t ucma_get_event(struct ucma_file *file, const char __user *inbuf,
                uevent->resp.id = ctx->id;
        }
 
-       if (copy_to_user((void __user *)(unsigned long)cmd.response,
+       if (copy_to_user(u64_to_user_ptr(cmd.response),
                         &uevent->resp,
                         min_t(size_t, out_len, sizeof(uevent->resp)))) {
                ret = -EFAULT;
@@ -489,7 +489,7 @@ static ssize_t ucma_create_id(struct ucma_file *file, const char __user *inbuf,
        }
 
        resp.id = ctx->id;
-       if (copy_to_user((void __user *)(unsigned long)cmd.response,
+       if (copy_to_user(u64_to_user_ptr(cmd.response),
                         &resp, sizeof(resp))) {
                ret = -EFAULT;
                goto err2;
@@ -614,7 +614,7 @@ static ssize_t ucma_destroy_id(struct ucma_file *file, const char __user *inbuf,
        }
 
        resp.events_reported = ucma_free_ctx(ctx);
-       if (copy_to_user((void __user *)(unsigned long)cmd.response,
+       if (copy_to_user(u64_to_user_ptr(cmd.response),
                         &resp, sizeof(resp)))
                ret = -EFAULT;
 
@@ -840,7 +840,7 @@ static ssize_t ucma_query_route(struct ucma_file *file,
                ucma_copy_iw_route(&resp, &ctx->cm_id->route);
 
 out:
-       if (copy_to_user((void __user *)(unsigned long)cmd.response,
+       if (copy_to_user(u64_to_user_ptr(cmd.response),
                         &resp, sizeof(resp)))
                ret = -EFAULT;
 
@@ -986,7 +986,7 @@ static ssize_t ucma_query(struct ucma_file *file,
        if (copy_from_user(&cmd, inbuf, sizeof(cmd)))
                return -EFAULT;
 
-       response = (void __user *)(unsigned long) cmd.response;
+       response = u64_to_user_ptr(cmd.response);
        ctx = ucma_get_ctx(file, cmd.id);
        if (IS_ERR(ctx))
                return PTR_ERR(ctx);
@@ -1169,7 +1169,7 @@ static ssize_t ucma_init_qp_attr(struct ucma_file *file,
                goto out;
 
        ib_copy_qp_attr_to_user(ctx->cm_id->device, &resp, &qp_attr);
-       if (copy_to_user((void __user *)(unsigned long)cmd.response,
+       if (copy_to_user(u64_to_user_ptr(cmd.response),
                         &resp, sizeof(resp)))
                ret = -EFAULT;
 
@@ -1305,7 +1305,7 @@ static ssize_t ucma_set_option(struct ucma_file *file, const char __user *inbuf,
        if (unlikely(cmd.optval > KMALLOC_MAX_SIZE))
                return -EINVAL;
 
-       optval = memdup_user((void __user *) (unsigned long) cmd.optval,
+       optval = memdup_user(u64_to_user_ptr(cmd.optval),
                             cmd.optlen);
        if (IS_ERR(optval)) {
                ret = PTR_ERR(optval);
@@ -1383,7 +1383,7 @@ static ssize_t ucma_process_join(struct ucma_file *file,
                goto err2;
 
        resp.id = mc->id;
-       if (copy_to_user((void __user *)(unsigned long) cmd->response,
+       if (copy_to_user(u64_to_user_ptr(cmd->response),
                         &resp, sizeof(resp))) {
                ret = -EFAULT;
                goto err3;
@@ -1488,7 +1488,7 @@ static ssize_t ucma_leave_multicast(struct ucma_file *file,
        resp.events_reported = mc->events_reported;
        kfree(mc);
 
-       if (copy_to_user((void __user *)(unsigned long)cmd.response,
+       if (copy_to_user(u64_to_user_ptr(cmd.response),
                         &resp, sizeof(resp)))
                ret = -EFAULT;
 out:
@@ -1575,7 +1575,7 @@ static ssize_t ucma_migrate_id(struct ucma_file *new_file,
        ucma_unlock_files(cur_file, new_file);
 
 response:
-       if (copy_to_user((void __user *)(unsigned long)cmd.response,
+       if (copy_to_user(u64_to_user_ptr(cmd.response),
                         &resp, sizeof(resp)))
                ret = -EFAULT;
 
index bb29146c3823d91abbc09bd0a4c51f961aabf4e8..536d78baacd3cee284af8dd8b1f07d7307a2a1bc 100644 (file)
@@ -3581,7 +3581,7 @@ static int __uverbs_create_xsrq(struct ib_uverbs_file *file,
        if (cmd->srq_type == IB_SRQT_XRC)
                resp.srqn = srq->ext.xrc.srq_num;
 
-       if (copy_to_user((void __user *) (unsigned long) cmd->response,
+       if (copy_to_user(u64_to_user_ptr(cmd->response),
                         &resp, sizeof resp)) {
                ret = -EFAULT;
                goto err_copy;
index c1c596adcd0107cf733aa43e66684ebcd364727d..0d5330b7353d2e814b09ef54366153128434799a 100644 (file)
@@ -473,7 +473,7 @@ nomem:
                tinfo->tidcnt = tididx;
                tinfo->length = mapped_pages * PAGE_SIZE;
 
-               if (copy_to_user((void __user *)(unsigned long)tinfo->tidlist,
+               if (copy_to_user(u64_to_user_ptr(tinfo->tidlist),
                                 tidlist, sizeof(tidlist[0]) * tididx)) {
                        /*
                         * On failure to copy to the user level, we need to undo
@@ -513,7 +513,7 @@ int hfi1_user_exp_rcv_clear(struct hfi1_filedata *fd,
        if (unlikely(tinfo->tidcnt > fd->tid_used))
                return -EINVAL;
 
-       tidinfo = memdup_user((void __user *)(unsigned long)tinfo->tidlist,
+       tidinfo = memdup_user(u64_to_user_ptr(tinfo->tidlist),
                              sizeof(tidinfo[0]) * tinfo->tidcnt);
        if (IS_ERR(tidinfo))
                return PTR_ERR(tidinfo);
index a9377eee873426b61acf85feb5e8a97392937917..11da796dd1b7161180473c3b785066b322b37085 100644 (file)
@@ -614,7 +614,7 @@ static ssize_t qib_diagpkt_write(struct file *fp,
        }
 
        if (copy_from_user(tmpbuf,
-                          (const void __user *) (unsigned long) dp.data,
+                          u64_to_user_ptr(dp.data),
                           dp.len)) {
                ret = -EFAULT;
                goto bail;
index 52c29db3a2f4a08dbfe9b6504c8ecc7768d3c34a..6a8800b65047fb317aba78712fab3ad25b8e2d21 100644 (file)
@@ -443,7 +443,7 @@ cleanup:
                        ret = -EFAULT;
                        goto cleanup;
                }
-               if (copy_to_user((void __user *) (unsigned long) ti->tidmap,
+               if (copy_to_user(u64_to_user_ptr(ti->tidmap),
                                 tidmap, sizeof(tidmap))) {
                        ret = -EFAULT;
                        goto cleanup;
@@ -490,7 +490,7 @@ static int qib_tid_free(struct qib_ctxtdata *rcd, unsigned subctxt,
                goto done;
        }
 
-       if (copy_from_user(tidmap, (void __user *)(unsigned long)ti->tidmap,
+       if (copy_from_user(tidmap, u64_to_user_ptr(ti->tidmap),
                           sizeof(tidmap))) {
                ret = -EFAULT;
                goto done;
@@ -2168,8 +2168,8 @@ static ssize_t qib_write(struct file *fp, const char __user *data,
                ret = qib_do_user_init(fp, &cmd.cmd.user_info);
                if (ret)
                        goto bail;
-               ret = qib_get_base_info(fp, (void __user *) (unsigned long)
-                                       cmd.cmd.user_info.spu_base_info,
+               ret = qib_get_base_info(fp, u64_to_user_ptr(
+                                         cmd.cmd.user_info.spu_base_info),
                                        cmd.cmd.user_info.spu_base_info_size);
                break;