drm/prime: fix up handle_to_fd ioctl return value
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 2 Jul 2013 07:18:39 +0000 (09:18 +0200)
committerJoonyoung Shim <jy0922.shim@samsung.com>
Wed, 13 Jan 2016 01:29:10 +0000 (10:29 +0900)
In

commit da34242e5e0638312130f5bd5d2d277afbc6f806
Author: YoungJun Cho <yj44.cho@samsung.com>
Date:   Wed Jun 26 10:21:42 2013 +0900

    drm/prime: add return check for dma_buf_fd

the failure case handling was fixed up. But in the case when we
already had the buffer exported it changed the return value:
Previously we've return 0 on success, now we return the fd.

This ABI change has been caught by i-g-t/prime_self_import/with_one_bo.

Change-Id: I8c6173851e379d5d9ad66b78260b4701665e0eda
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=66436
Cc: YoungJun Cho <yj44.cho@samsung.com>
Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Tested-by: lu hua <huax.lu@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: YoungJun Cho <yj44.cho@samsung.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/drm_prime.c

index 52709f2..1e0de41 100644 (file)
@@ -347,10 +347,13 @@ int drm_gem_prime_handle_to_fd(struct drm_device *dev,
 out_have_obj:
        get_dma_buf(dmabuf);
        ret = dma_buf_fd(dmabuf, flags);
-       if (ret < 0)
+       if (ret < 0) {
                dma_buf_put(dmabuf);
-       else
+       } else {
                *prime_fd = ret;
+               ret = 0;
+       }
+
        goto out;
 
 fail_rm_handle: