[PATCH v10 2/3] kernel.h: add u64_to_user_ptr()

2016-03-19 Thread Gustavo Padovan
From: Gustavo Padovan 

This function had copies in 3 different files. Unify them in kernel.h.

Cc: Joe Perches 
Cc: Andrew Morton 
Cc: David Airlie 
Cc: Daniel Vetter 
Cc: Rob Clark 
Signed-off-by: Gustavo Padovan 
---
 drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c | 11 +++
 drivers/gpu/drm/i915/i915_drv.h  |  5 -
 drivers/gpu/drm/i915/i915_gem.c  | 14 +++---
 drivers/gpu/drm/i915/i915_gem_execbuffer.c   | 14 +++---
 drivers/gpu/drm/msm/msm_gem_submit.c | 11 +++
 include/linux/kernel.h   |  5 +
 6 files changed, 25 insertions(+), 35 deletions(-)

diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c 
b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c
index 1aba01a..5420bc5 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c
@@ -28,11 +28,6 @@
 #define BO_LOCKED   0x4000
 #define BO_PINNED   0x2000
 
-static inline void __user *to_user_ptr(u64 address)
-{
-   return (void __user *)(uintptr_t)address;
-}
-
 static struct etnaviv_gem_submit *submit_create(struct drm_device *dev,
struct etnaviv_gpu *gpu, size_t nr)
 {
@@ -351,21 +346,21 @@ int etnaviv_ioctl_gem_submit(struct drm_device *dev, void 
*data,
cmdbuf->exec_state = args->exec_state;
cmdbuf->ctx = file->driver_priv;
 
-   ret = copy_from_user(bos, to_user_ptr(args->bos),
+   ret = copy_from_user(bos, u64_to_user_ptr(args->bos),
 args->nr_bos * sizeof(*bos));
if (ret) {
ret = -EFAULT;
goto err_submit_cmds;
}
 
-   ret = copy_from_user(relocs, to_user_ptr(args->relocs),
+   ret = copy_from_user(relocs, u64_to_user_ptr(args->relocs),
 args->nr_relocs * sizeof(*relocs));
if (ret) {
ret = -EFAULT;
goto err_submit_cmds;
}
 
-   ret = copy_from_user(stream, to_user_ptr(args->stream),
+   ret = copy_from_user(stream, u64_to_user_ptr(args->stream),
 args->stream_size);
if (ret) {
ret = -EFAULT;
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index b0847b9..c446895 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -3564,11 +3564,6 @@ static inline i915_reg_t i915_vgacntrl_reg(struct 
drm_device *dev)
return VGACNTRL;
 }
 
-static inline void __user *to_user_ptr(u64 address)
-{
-   return (void __user *)(uintptr_t)address;
-}
-
 static inline unsigned long msecs_to_jiffies_timeout(const unsigned int m)
 {
unsigned long j = msecs_to_jiffies(m);
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index bb44bad..cd11790 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -324,7 +324,7 @@ i915_gem_phys_pwrite(struct drm_i915_gem_object *obj,
 {
struct drm_device *dev = obj->base.dev;
void *vaddr = obj->phys_handle->vaddr + args->offset;
-   char __user *user_data = to_user_ptr(args->data_ptr);
+   char __user *user_data = u64_to_user_ptr(args->data_ptr);
int ret = 0;
 
/* We manually control the domain here and pretend that it
@@ -605,7 +605,7 @@ i915_gem_shmem_pread(struct drm_device *dev,
int needs_clflush = 0;
struct sg_page_iter sg_iter;
 
-   user_data = to_user_ptr(args->data_ptr);
+   user_data = u64_to_user_ptr(args->data_ptr);
remain = args->size;
 
obj_do_bit17_swizzling = i915_gem_object_needs_bit17_swizzle(obj);
@@ -692,7 +692,7 @@ i915_gem_pread_ioctl(struct drm_device *dev, void *data,
return 0;
 
if (!access_ok(VERIFY_WRITE,
-  to_user_ptr(args->data_ptr),
+  u64_to_user_ptr(args->data_ptr),
   args->size))
return -EFAULT;
 
@@ -783,7 +783,7 @@ i915_gem_gtt_pwrite_fast(struct drm_device *dev,
if (ret)
goto out_unpin;
 
-   user_data = to_user_ptr(args->data_ptr);
+   user_data = u64_to_user_ptr(args->data_ptr);
remain = args->size;
 
offset = i915_gem_obj_ggtt_offset(obj) + args->offset;
@@ -907,7 +907,7 @@ i915_gem_shmem_pwrite(struct drm_device *dev,
int needs_clflush_before = 0;
struct sg_page_iter sg_iter;
 
-   user_data = to_user_ptr(args->data_ptr);
+   user_data = u64_to_user_ptr(args->data_ptr);
remain = args->size;
 
obj_do_bit17_swizzling = i915_gem_object_needs_bit17_swizzle(obj);
@@ -1036,12 +1036,12 @@ i915_gem_pwrite_ioctl(struct drm_device *dev, void 
*data,
return 0;
 
if (!access_ok(VERIFY_READ,
-  to_user_ptr(args->data_ptr),
+  u64_to_user_ptr(args->data_ptr),
   args->size))
return -EFAULT;
 
if (likely(

Re: [PATCH v10 2/3] kernel.h: add u64_to_user_ptr()

2016-03-19 Thread Joe Perches
On Fri, 2016-03-18 at 10:27 -0300, Gustavo Padovan wrote:
> From: Gustavo Padovan 
> 
> This function had copies in 3 different files. Unify them in
> kernel.h.

This function might be used more in drm files
in a separate patch too:

$ git grep -n -E "__user.*\(\s*uintptr_t\s*\)" drivers/gpu/drm
drivers/gpu/drm/armada/armada_gem.c:385:ptr = (char __user 
*)(uintptr_t)args->ptr;
drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c:33:return (void __user 
*)(uintptr_t)address;
drivers/gpu/drm/i915/i915_drv.h:3581:   return (void __user 
*)(uintptr_t)address;
drivers/gpu/drm/msm/msm_gem_submit.c:33:return (void __user 
*)(uintptr_t)address;
drivers/gpu/drm/nouveau/nouveau_gem.c:471:  (void 
__force __user *)(uintptr_t)user_pbbo_ptr;
drivers/gpu/drm/nouveau/nouveau_gem.c:568:  void __user *userptr = (void 
__force __user *)(uintptr_t)user;
drivers/gpu/drm/tegra/drm.c:333:(void __user 
*)(uintptr_t)args->cmdbufs;
drivers/gpu/drm/tegra/drm.c:335:(void __user 
*)(uintptr_t)args->relocs;
drivers/gpu/drm/tegra/drm.c:337:(void __user 
*)(uintptr_t)args->waitchks;
drivers/gpu/drm/tegra/drm.c:392:if (copy_from_user(&syncpt, (void 
__user *)(uintptr_t)args->syncpts,
drivers/gpu/drm/vc4/vc4_bo.c:502:(void __user 
*)(uintptr_t)args->data,
drivers/gpu/drm/vc4/vc4_gem.c:123:  if (copy_to_user((void __user 
*)(uintptr_t)get_state->bo,
drivers/gpu/drm/vc4/vc4_gem.c:553:   (void __user 
*)(uintptr_t)args->bo_handles,
drivers/gpu/drm/vc4/vc4_gem.c:627: (void __user 
*)(uintptr_t)args->bin_cl,
drivers/gpu/drm/vc4/vc4_gem.c:634: (void __user 
*)(uintptr_t)args->shader_rec,
drivers/gpu/drm/vc4/vc4_gem.c:641: (void __user 
*)(uintptr_t)args->uniforms,
drivers/gpu/drm/virtio/virtgpu_ioctl.c:126: user_bo_handles = (void 
__user *)(uintptr_t)exbuf->bo_handles;
drivers/gpu/drm/virtio/virtgpu_ioctl.c:161: if (copy_from_user(buf, (void 
__user *)(uintptr_t)exbuf->command,

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel