Commit b24791fe authored by Daniel Stone's avatar Daniel Stone

drm: Reject getfb for multi-plane framebuffers

getfb can only return a single plane, so reject attempts to use it with
multi-plane framebuffers.
Signed-off-by: default avatarDaniel Stone <daniels@collabora.com>
Reported-by: default avatarDaniel van Vugt <daniel.van.vugt@canonical.com>
Reviewed-by: default avatarRob Clark <robdclark@gmail.com>
Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Fixes: 308e5bcb ("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
parent 1bc659eb
...@@ -461,6 +461,12 @@ int drm_mode_getfb(struct drm_device *dev, ...@@ -461,6 +461,12 @@ int drm_mode_getfb(struct drm_device *dev,
if (!fb) if (!fb)
return -ENOENT; return -ENOENT;
/* Multi-planar framebuffers need getfb2. */
if (fb->format->num_planes > 1) {
ret = -EINVAL;
goto out;
}
r->height = fb->height; r->height = fb->height;
r->width = fb->width; r->width = fb->width;
r->depth = fb->format->depth; r->depth = fb->format->depth;
...@@ -484,6 +490,7 @@ int drm_mode_getfb(struct drm_device *dev, ...@@ -484,6 +490,7 @@ int drm_mode_getfb(struct drm_device *dev,
ret = -ENODEV; ret = -ENODEV;
} }
out:
drm_framebuffer_put(fb); drm_framebuffer_put(fb);
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment