Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b24791fe authored by Daniel Stone's avatar Daniel Stone
Browse files

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
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -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,
		ret = -ENODEV;
		ret = -ENODEV;
	}
	}


out:
	drm_framebuffer_put(fb);
	drm_framebuffer_put(fb);


	return ret;
	return ret;