4.9-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Dan Carpenter <[email protected]>

commit b2cdeb19f16ad984eb5bb9193f793d05a8101511 upstream.

If the allocation fails the current code returns success.  If
copy_from_user() fails it returns the number of bytes remaining instead
of -EFAULT.

Fixes: d5b1a78a772f ("drm/vc4: Add support for drawing 3D frames.")
Signed-off-by: Dan Carpenter <[email protected]>
Reviewed-by: Eric Anholt <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
 drivers/gpu/drm/vc4/vc4_gem.c |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

--- a/drivers/gpu/drm/vc4/vc4_gem.c
+++ b/drivers/gpu/drm/vc4/vc4_gem.c
@@ -544,14 +544,15 @@ vc4_cl_lookup_bos(struct drm_device *dev
 
        handles = drm_malloc_ab(exec->bo_count, sizeof(uint32_t));
        if (!handles) {
+               ret = -ENOMEM;
                DRM_ERROR("Failed to allocate incoming GEM handles\n");
                goto fail;
        }
 
-       ret = copy_from_user(handles,
-                            (void __user *)(uintptr_t)args->bo_handles,
-                            exec->bo_count * sizeof(uint32_t));
-       if (ret) {
+       if (copy_from_user(handles,
+                          (void __user *)(uintptr_t)args->bo_handles,
+                          exec->bo_count * sizeof(uint32_t))) {
+               ret = -EFAULT;
                DRM_ERROR("Failed to copy in GEM handles\n");
                goto fail;
        }


Reply via email to