]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
drm: Reject getfb for multi-plane framebuffers
authorDaniel Stone <daniels@collabora.com>
Tue, 20 Mar 2018 22:58:39 +0000 (22:58 +0000)
committerDaniel Stone <daniels@collabora.com>
Wed, 21 Mar 2018 09:43:21 +0000 (09:43 +0000)
getfb can only return a single plane, so reject attempts to use it with
multi-plane framebuffers.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Reported-by: Daniel van Vugt <daniel.van.vugt@canonical.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Fixes: 308e5bcbdb10 ("drm: add an fb creation ioctl that takes a pixel format v5")
Cc: stable@vger.kernel.org # v3.3+
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105518
Link: https://patchwork.freedesktop.org/patch/msgid/20180320225839.30905-1-daniels@collabora.com
drivers/gpu/drm/drm_framebuffer.c

index c0530a1af5e39da421b87ba14d1b5f31f1a864f6..2dc5e8bed17214f187fdbe93e28b72cceeb6b376 100644 (file)
@@ -461,6 +461,12 @@ int drm_mode_getfb(struct drm_device *dev,
        if (!fb)
                return -ENOENT;
 
+       /* Multi-planar framebuffers need getfb2. */
+       if (fb->format->num_planes > 1) {
+               ret = -EINVAL;
+               goto out;
+       }
+
        r->height = fb->height;
        r->width = fb->width;
        r->depth = fb->format->depth;
@@ -484,6 +490,7 @@ int drm_mode_getfb(struct drm_device *dev,
                ret = -ENODEV;
        }
 
+out:
        drm_framebuffer_put(fb);
 
        return ret;