drm: Use u64_to_user_ptr() helper for blob ioctls
authorChris Wilson <chris@chris-wilson.co.uk>
Sun, 27 Nov 2016 17:09:08 +0000 (17:09 +0000)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 28 Nov 2016 07:12:18 +0000 (08:12 +0100)
Remove the ugly sparse casts by using the helper u64_to_user_ptr()
instead.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20161127170910.29106-1-chris@chris-wilson.co.uk
drivers/gpu/drm/drm_property.c

index d1e50ac6f72babc18f78b2b28391fce5a652373a..24be69d299646d5e02ccc239b0cc882daa477331 100644 (file)
@@ -729,7 +729,6 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
        struct drm_mode_get_blob *out_resp = data;
        struct drm_property_blob *blob;
        int ret = 0;
-       void __user *blob_ptr;
 
        if (!drm_core_check_feature(dev, DRIVER_MODESET))
                return -EINVAL;
@@ -739,8 +738,9 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
                return -ENOENT;
 
        if (out_resp->length == blob->length) {
-               blob_ptr = (void __user *)(unsigned long)out_resp->data;
-               if (copy_to_user(blob_ptr, blob->data, blob->length)) {
+               if (copy_to_user(u64_to_user_ptr(out_resp->data),
+                                blob->data,
+                                blob->length)) {
                        ret = -EFAULT;
                        goto unref;
                }
@@ -757,7 +757,6 @@ int drm_mode_createblob_ioctl(struct drm_device *dev,
 {
        struct drm_mode_create_blob *out_resp = data;
        struct drm_property_blob *blob;
-       void __user *blob_ptr;
        int ret = 0;
 
        if (!drm_core_check_feature(dev, DRIVER_MODESET))
@@ -767,8 +766,9 @@ int drm_mode_createblob_ioctl(struct drm_device *dev,
        if (IS_ERR(blob))
                return PTR_ERR(blob);
 
-       blob_ptr = (void __user *)(unsigned long)out_resp->data;
-       if (copy_from_user(blob->data, blob_ptr, out_resp->length)) {
+       if (copy_from_user(blob->data,
+                          u64_to_user_ptr(out_resp->data),
+                          out_resp->length)) {
                ret = -EFAULT;
                goto out_blob;
        }