drm/vmwgfx: return -EFAULT for copy_to_user errors

Previous thread: drm/radeon: fix PM on non-vram cards. by Linux Kernel Mailing List on Tuesday, June 8, 2010 - 8:59 pm. (1 message)

Next thread: drm/radeon/kms/combios: fix typo in voltage fix by Linux Kernel Mailing List on Tuesday, June 8, 2010 - 8:59 pm. (1 message)
From: Linux Kernel Mailing List
Date: Tuesday, June 8, 2010 - 8:59 pm

Gitweb:     http://git.kernel.org/linus/9b8eb4d14767209c83087063352cd04266ecdfd1
Commit:     9b8eb4d14767209c83087063352cd04266ecdfd1
Parent:     e902a358c753b93245083201c02312a580cf13d4
Author:     Dan Carpenter <error27@gmail.com>
AuthorDate: Fri Jun 4 12:24:13 2010 +0200
Committer:  Dave Airlie <airlied@redhat.com>
CommitDate: Tue Jun 8 09:33:41 2010 +1000

    drm/vmwgfx: return -EFAULT for copy_to_user errors
    
    copy_to/from_user() returns the number of bytes remaining to be copied
    but we want to return a negative error code here.  This gets returned to
    userspace.
    
    Signed-off-by: Dan Carpenter <error27@gmail.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
---
 drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c  |    1 +
 drivers/gpu/drm/vmwgfx/vmwgfx_resource.c |    8 ++++++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
index bdd67cf..8e39685 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
@@ -644,6 +644,7 @@ int vmw_execbuf_ioctl(struct drm_device *dev, void *data,
 	ret = copy_from_user(cmd, user_cmd, arg->command_size);
 
 	if (unlikely(ret != 0)) {
+		ret = -EFAULT;
 		DRM_ERROR("Failed copying commands.\n");
 		goto out_commit;
 	}
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
index f8fbbc6..8612378 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
@@ -597,8 +597,10 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data,
 
 	ret = copy_from_user(srf->sizes, user_sizes,
 			     srf->num_sizes * sizeof(*srf->sizes));
-	if (unlikely(ret != 0))
+	if (unlikely(ret != 0)) {
+		ret = -EFAULT;
 		goto out_err1;
+	}
 
 	if (srf->scanout &&
 	    srf->num_sizes == 1 &&
@@ -697,9 +699,11 @@ int vmw_surface_reference_ioctl(struct drm_device *dev, void *data,
 	if (user_sizes)
 ...
Previous thread: drm/radeon: fix PM on non-vram cards. by Linux Kernel Mailing List on Tuesday, June 8, 2010 - 8:59 pm. (1 message)

Next thread: drm/radeon/kms/combios: fix typo in voltage fix by Linux Kernel Mailing List on Tuesday, June 8, 2010 - 8:59 pm. (1 message)