[PATCH 1/2] drm: Do not drop root privileges for a fancier younger process
David Herrmann
dh.herrmann at gmail.com
Wed Oct 30 08:22:39 CET 2013
Hi
On Tue, Oct 29, 2013 at 9:55 AM, Chris Wilson <chris at chris-wilson.co.uk> wrote:
> When a second process opens the device and master transferrence is
> complete, we walk the list of open devices and remove their
> authentication. This also revokes our root privilege. Instead of simply
> dropping the authentication, this patch reverts the authenticated state
> back to its original value.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
> drivers/gpu/drm/drm_fops.c | 5 +++--
> include/drm/drmP.h | 1 +
> 2 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
> index da1940ae9a2d..2f8b41c58d02 100644
> --- a/drivers/gpu/drm/drm_fops.c
> +++ b/drivers/gpu/drm/drm_fops.c
> @@ -239,7 +239,8 @@ static int drm_open_helper(struct inode *inode, struct file *filp,
>
> priv->ioctl_count = 0;
> /* for compatibility root is always authenticated */
> - priv->authenticated = capable(CAP_SYS_ADMIN);
> + priv->always_authenticated = capable(CAP_SYS_ADMIN);
> + priv->authenticated = priv->always_authenticated;
> priv->lock_count = 0;
>
> INIT_LIST_HEAD(&priv->lhead);
> @@ -523,7 +524,7 @@ int drm_release(struct inode *inode, struct file *filp)
> list_for_each_entry(temp, &dev->filelist, lhead) {
> if ((temp->master == file_priv->master) &&
> (temp != file_priv))
> - temp->authenticated = 0;
> + temp->authenticated = temp->always_authenticated;
> }
>
> /**
> diff --git a/include/drm/drmP.h b/include/drm/drmP.h
> index 490534c990b7..3a90857bd0ee 100644
> --- a/include/drm/drmP.h
> +++ b/include/drm/drmP.h
> @@ -412,6 +412,7 @@ struct drm_prime_file_private {
>
> /** File private data */
> struct drm_file {
> + int always_authenticated;
> int authenticated;
I was going to say you can reuse "authenticated" here as it's an
"int". But your follow-up fixes this I think. Apart from that:
Reviewed-by: David Herrmann <dh.herrmann at gmail.com>
Please also tag this for stable via: Cc: <stable at vger.kernel.org>
Thanks
David
> struct pid *pid;
> kuid_t uid;
> --
> 1.8.4.rc3
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
More information about the dri-devel
mailing list