From patchwork Tue Jun 21 08:54:21 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Vetter X-Patchwork-Id: 9189921 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 537456089F for ; Tue, 21 Jun 2016 08:55:02 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 42C6427F7F for ; Tue, 21 Jun 2016 08:55:02 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3760B27FA7; Tue, 21 Jun 2016 08:55:02 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D61EA27FA3 for ; Tue, 21 Jun 2016 08:55:01 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0F0396E671; Tue, 21 Jun 2016 08:54:43 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-lb0-x241.google.com (mail-lb0-x241.google.com [IPv6:2a00:1450:4010:c04::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 059D16E664 for ; Tue, 21 Jun 2016 08:54:41 +0000 (UTC) Received: by mail-lb0-x241.google.com with SMTP id td3so1039255lbb.2 for ; Tue, 21 Jun 2016 01:54:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=fR7W0mZck6arUHwV4wKsGQ7NXrTlKA1akAguQBb8/yg=; b=iqyVtCfa1EcR4DBsNoPGBNqUP9/YuPEXV9lrJrrOrlMDIZCubwIXqlGfq0d3CUC5Y7 xBzbeQ2ZaIFnEiw1QNuM2pxBBUJZvxrxFeD9pHIPZoVPdMFkc0OcXgNuky4I9n06bv+A yNKnN5/eBrOQ/PG/alV5z86DhRIugvsajHutw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=fR7W0mZck6arUHwV4wKsGQ7NXrTlKA1akAguQBb8/yg=; b=fPBRq3fK7NYXMh+X4EkOdrKxc5q7MtIIcRGwmU/mfOMmZKtht0wVy0e82HnkKKy40q NRO2zhCViL/kCXcAGeMpI8AaqqdbNJ6tyS7uuYHMkg6DDbuT1AJEHzk0tsnKcXEbI70B YBjCgzkEVdLoGLCYhut/5xeK73vjncMRQeA5mI+SEnbTN9hrWS+x/84UsecEzGVjR1bb T2T/oGFVQ6xiGX6cESDta4Hs0zpXETB5nhfkJL3TAVK5kMIv/dXjNA/r4YwXBTWgnsEG TpazqNfmF3x/JsrJFdPrSiLOEJ7lfqa9khOb94+Dzoew49zTFk9gRhfp+PeiGmdoz1jh xjdQ== X-Gm-Message-State: ALyK8tIp0Ujt00a1MQE+2eyCuq8JVeoOSg0vQXCNTgwoZp76Pol1I2VerxagTenfracDVg== X-Received: by 10.194.133.135 with SMTP id pc7mr18773656wjb.49.1466499278700; Tue, 21 Jun 2016 01:54:38 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:56b5:0:ac27:b86c:7764:9429]) by smtp.gmail.com with ESMTPSA id a129sm1906106wma.2.2016.06.21.01.54.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Jun 2016 01:54:38 -0700 (PDT) From: Daniel Vetter To: DRI Development Date: Tue, 21 Jun 2016 10:54:21 +0200 Message-Id: <1466499262-18717-10-git-send-email-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1466499262-18717-1-git-send-email-daniel.vetter@ffwll.ch> References: <1466499262-18717-1-git-send-email-daniel.vetter@ffwll.ch> Cc: Daniel Vetter , Intel Graphics Development , Thomas Hellstrom Subject: [Intel-gfx] [PATCH 10/11] drm: Clear up master tracking booleans X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Virus-Scanned: ClamAV using ClamSMTP - 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 Cc: Thomas Hellstrom Reviewed-by: Chris Wilson Reviewed-by: Emil Velikov Signed-off-by: Daniel Vetter --- 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;