+++ /dev/null
-From 204f640da6914844b3270b41b29c84f6e3b74083 Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter@ffwll.ch>
-Date: Thu, 28 Feb 2019 15:49:08 +0100
-Subject: drm/lease: Make sure implicit planes are leased
-
-From: Daniel Vetter <daniel.vetter@ffwll.ch>
-
-commit 204f640da6914844b3270b41b29c84f6e3b74083 upstream.
-
-If userspace doesn't enable universal planes, then we automatically
-add the primary and cursor planes. But for universal userspace there's
-no such check (and maybe we only want to give the lessee one plane,
-maybe not even the primary one), hence we need to check for the
-implied plane.
-
-v2: don't forget setcrtc ioctl.
-
-v3: Still allow disabling of the crtc in SETCRTC.
-
-Cc: stable@vger.kernel.org
-Cc: Keith Packard <keithp@keithp.com>
-Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
-Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
-Link: https://patchwork.freedesktop.org/patch/msgid/20190228144910.26488-6-daniel.vetter@ffwll.ch
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- drivers/gpu/drm/drm_crtc.c | 4 ++++
- drivers/gpu/drm/drm_plane.c | 8 ++++++++
- 2 files changed, 12 insertions(+)
-
---- a/drivers/gpu/drm/drm_crtc.c
-+++ b/drivers/gpu/drm/drm_crtc.c
-@@ -576,6 +576,10 @@ int drm_mode_setcrtc(struct drm_device *
- }
- DRM_DEBUG_KMS("[CRTC:%d:%s]\n", crtc->base.id, crtc->name);
-
-+ /* allow disabling with the primary plane leased */
-+ if (crtc_req->mode_valid && !drm_lease_held(file_priv, plane->base.id))
-+ return -EACCES;
-+
- mutex_lock(&crtc->dev->mode_config.mutex);
- drm_modeset_acquire_init(&ctx, 0);
- retry:
---- a/drivers/gpu/drm/drm_plane.c
-+++ b/drivers/gpu/drm/drm_plane.c
-@@ -851,6 +851,11 @@ retry:
- if (ret)
- goto out;
-
-+ if (!drm_lease_held(file_priv, crtc->cursor->base.id)) {
-+ ret = -EACCES;
-+ goto out;
-+ }
-+
- ret = drm_mode_cursor_universal(crtc, req, file_priv, &ctx);
- goto out;
- }
-@@ -949,6 +954,9 @@ int drm_mode_page_flip_ioctl(struct drm_
- if (!crtc)
- return -ENOENT;
-
-+ if (!drm_lease_held(file_priv, plane->base.id))
-+ return -EACCES;
-+
- if (crtc->funcs->page_flip_target) {
- u32 current_vblank;
- int r;