[PATCH v2] drm: reduce GETCLIENT to a minimum

Daniel Vetter daniel at ffwll.ch
Thu Aug 25 14:58:01 UTC 2016


On Thu, Aug 25, 2016 at 04:35:05PM +0200, David Herrmann wrote:
> The *only* known user of GETCLIENT is libva, which uses it to check
> whether its own context is authenticated. It used to iterate all clients,
> look for one that matches its own pid and then check its state.
> 
> The entire purpose for us to still have a GETCLIENT implementation is to
> serve libva. So lets not pretend we do anything else: Make this function
> return information on the caller's context only, fake the PID to the
> caller's pid so they always match, and just fill in the "authenticated"
> bit, nothing else.
> 
> This patch reduces the complexity of GETCLIENT to a bare minimum, avoids
> any dependency on priv->uid or priv->pid (allows us to get rid of them),
> and makes libva happy by always *exactly* returning the information it
> wants.
> 
> Signed-off-by: David Herrmann <dh.herrmann at gmail.com>
> ---
> v2: Just re-order the series and send individual patches, since they do
>     not depend on each other.
> 
>  drivers/gpu/drm/drm_ioctl.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c
> index 33af4a5..bc5c65e 100644
> --- a/drivers/gpu/drm/drm_ioctl.c
> +++ b/drivers/gpu/drm/drm_ioctl.c
> @@ -189,9 +189,8 @@ static int drm_getclient(struct drm_device *dev, void *data,
>  	 */
>  	if (client->idx == 0) {
>  		client->auth = file_priv->authenticated;
> -		client->pid = pid_vnr(file_priv->pid);
> -		client->uid = from_kuid_munged(current_user_ns(),
> -					       file_priv->uid);
> +		client->pid = task_pid_vnr(current);
> +		client->uid = overflowuid;
>  		client->magic = 0;
>  		client->iocs = 0;

Merged to drm-misc, thanks.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the dri-devel mailing list