Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm: Check for lessee in DROP_MASTER ioctl

Don't let a lessee control what the current DRM master is set to;
that's the job of the "real" master. Otherwise, the lessee would
disable all access to master operations for the owner and all lessees
under it.

This matches the same check made in the SET_MASTER ioctl.

Signed-off-by: Keith Packard <keithp@keithp.com>
Fixes: 2ed077e467ee ("drm: Add drm_object lease infrastructure [v5]")
Cc: <stable@vger.kernel.org> # v4.15+
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20180119015159.1606-1-keithp@keithp.com

authored by

Keith Packard and committed by
Daniel Vetter
761e05a7 5bffee86

+6
+6
drivers/gpu/drm/drm_auth.c
··· 230 230 if (!dev->master) 231 231 goto out_unlock; 232 232 233 + if (file_priv->master->lessor != NULL) { 234 + DRM_DEBUG_LEASE("Attempt to drop lessee %d as master\n", file_priv->master->lessee_id); 235 + ret = -EINVAL; 236 + goto out_unlock; 237 + } 238 + 233 239 ret = 0; 234 240 drm_drop_master(dev, file_priv); 235 241 out_unlock: