From: Daniel Vetter <daniel.vetter@ffwll.ch>
To: DRI Development <dri-devel@lists.freedesktop.org>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>,
Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
Thomas Hellstrom <thellstrom@vmware.com>
Subject: [PATCH 10/11] drm: Clear up master tracking booleans
Date: Tue, 21 Jun 2016 10:54:21 +0200 [thread overview]
Message-ID: <1466499262-18717-10-git-send-email-daniel.vetter@ffwll.ch> (raw)
In-Reply-To: <1466499262-18717-1-git-send-email-daniel.vetter@ffwll.ch>
- is_master can be removed, we can compute this by checking allowed_master
(which really just tracks whether a master struct has been allocated
for this fpriv in either open or set_master), and whether the fpriv is
the current master on the device.
- that frees up is_master as a good replacement name for allowed_master.
With that it's clear that it tracks whether the fpriv is a master (with
possibly clients attached to it and authenticated against it), and that
one of those fprivs with is_master set is the current master.
v2: Fix kerneldoc for is_master (Emil).
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
drivers/gpu/drm/drm_auth.c | 9 +++------
include/drm/drmP.h | 6 ++----
2 files changed, 5 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/drm_auth.c b/drivers/gpu/drm/drm_auth.c
index dc33387519cb..0a23b32e627c 100644
--- a/drivers/gpu/drm/drm_auth.c
+++ b/drivers/gpu/drm/drm_auth.c
@@ -116,11 +116,9 @@ static int drm_set_master(struct drm_device *dev, struct drm_file *fpriv,
int ret = 0;
dev->master = drm_master_get(fpriv->master);
- fpriv->is_master = 1;
if (dev->driver->master_set) {
ret = dev->driver->master_set(dev, fpriv, new_master);
if (unlikely(ret != 0)) {
- fpriv->is_master = 0;
drm_master_put(&dev->master);
}
}
@@ -157,7 +155,7 @@ static int drm_new_set_master(struct drm_device *dev, struct drm_file *fpriv)
if (ret)
goto out_err;
}
- fpriv->allowed_master = 1;
+ fpriv->is_master = 1;
fpriv->authenticated = 1;
ret = drm_set_master(dev, fpriv, true);
@@ -196,7 +194,7 @@ int drm_setmaster_ioctl(struct drm_device *dev, void *data,
goto out_unlock;
}
- if (!file_priv->allowed_master) {
+ if (!file_priv->is_master) {
ret = drm_new_set_master(dev, file_priv);
goto out_unlock;
}
@@ -213,7 +211,6 @@ static void drm_drop_master(struct drm_device *dev,
if (dev->driver->master_drop)
dev->driver->master_drop(dev, fpriv);
drm_master_put(&dev->master);
- fpriv->is_master = 0;
}
int drm_dropmaster_ioctl(struct drm_device *dev, void *data,
@@ -291,7 +288,7 @@ out:
bool drm_is_current_master(struct drm_file *fpriv)
{
- return fpriv->is_master;
+ return fpriv->is_master && fpriv->master == fpriv->minor->dev->master;
}
EXPORT_SYMBOL(drm_is_current_master);
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 5f811edefaf1..128a03bfdebd 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -303,8 +303,6 @@ struct drm_prime_file_private {
/** File private data */
struct drm_file {
unsigned authenticated :1;
- /* Whether we're master for a minor. Protected by master_mutex */
- unsigned is_master :1;
/* true when the client has asked us to expose stereo 3D mode flags */
unsigned stereo_allowed :1;
/*
@@ -315,10 +313,10 @@ struct drm_file {
/* true if client understands atomic properties */
unsigned atomic:1;
/*
- * This client is allowed to gain master privileges for @master.
+ * This client is the creator of @master.
* Protected by struct drm_device::master_mutex.
*/
- unsigned allowed_master:1;
+ unsigned is_master:1;
struct pid *pid;
kuid_t uid;
--
2.8.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2016-06-21 8:54 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-21 8:54 [PATCH 01/11] drm: Move master pointer from drm_minor to drm_device Daniel Vetter
2016-06-21 8:54 ` [PATCH 02/11] drm: Clean up drm_crtc.h Daniel Vetter
2016-06-21 8:54 ` [PATCH 03/11] drm: Use dev->name as fallback for dev->unique Daniel Vetter
2016-06-21 8:54 ` [PATCH 04/11] drm/vgem: Stop calling drm_drv_set_unique Daniel Vetter
2016-06-21 8:54 ` [PATCH 05/11] drm: Don't call drm_dev_set_unique from platform drivers Daniel Vetter
2016-06-21 8:54 ` [PATCH 06/11] drm: Nuke SET_UNIQUE ioctl Daniel Vetter
2016-06-21 8:54 ` [PATCH 07/11] drm: Lobotomize set_busid nonsense for !pci drivers Daniel Vetter
2016-06-21 12:08 ` [PATCH] " Daniel Vetter
2016-09-30 3:09 ` Regression: drm: Lobotomize set_busid nonsense for !pci drivers (a325725633c2) Laszlo Ersek
2016-09-30 8:28 ` Hans de Goede
2016-09-30 10:03 ` Laszlo Ersek
2016-09-30 10:35 ` Hans de Goede
2016-09-30 14:51 ` Laszlo Ersek
2016-09-30 14:59 ` Hans de Goede
2016-09-30 15:33 ` Laszlo Ersek
2016-09-30 16:38 ` Hans de Goede
2016-09-30 17:26 ` Laszlo Ersek
2016-10-03 11:34 ` Emil Velikov
2016-10-03 12:14 ` Laszlo Ersek
2016-10-03 12:46 ` Emil Velikov
2016-10-03 13:03 ` Laszlo Ersek
2016-10-03 14:15 ` Laszlo Ersek
2016-10-03 14:27 ` Laszlo Ersek
2016-10-03 15:00 ` Emil Velikov
2016-10-03 15:19 ` Laszlo Ersek
2016-10-03 19:12 ` Daniel Vetter
2016-10-03 19:36 ` Laszlo Ersek
2016-10-03 20:34 ` Daniel Vetter
2016-10-03 20:44 ` Laszlo Ersek
2016-10-04 7:43 ` Gerd Hoffmann
2016-10-05 6:34 ` Gerd Hoffmann
2016-10-05 10:30 ` Daniel Vetter
2016-10-05 12:43 ` Gerd Hoffmann
2016-10-05 13:02 ` Daniel Vetter
2016-09-30 9:55 ` Emil Velikov
2016-09-30 10:37 ` Emil Velikov
2016-06-21 8:54 ` [PATCH 08/11] drm: Refactor drop/set master code a bit Daniel Vetter
2016-06-21 12:20 ` [PATCH] " Daniel Vetter
2016-06-21 8:54 ` [PATCH 09/11] drm: Extract drm_is_current_master Daniel Vetter
2016-06-21 8:54 ` Daniel Vetter [this message]
2016-06-21 8:54 ` [PATCH 11/11] drm: document drm_auth.c Daniel Vetter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1466499262-18717-10-git-send-email-daniel.vetter@ffwll.ch \
--to=daniel.vetter@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=thellstrom@vmware.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).