mbox series

[0/3] drm: tweak permission handling

Message ID 20181219192247.29880-1-emil.l.velikov@gmail.com (mailing list archive)
Headers show
Series drm: tweak permission handling | expand

Message

Emil Velikov Dec. 19, 2018, 7:22 p.m. UTC
Hi all,

This series relaxes some permission handling we have in core.

The first patch, swaps the DRM_ROOT_ONLY to DRM_MASTER on DROP_MASTER
ioctls. Thus any application can drop privileges just after SET_MASTER
and not worry about elevating them, solely for DROP_MASTER.

The last commit, admittedly works around userspace bugs. Although it's
far better than the "run as root" approach that people have been using.

It has the extra side effect of allowing some userspace (but not all)
to use vgem without any modifications ;-)

Would be great if this series is checked through the Intel GFX trybot
but I'm not sure how to do that.

Any comments, review or general ack's are appreciated.

Thanks
Emil

Emil Velikov (3):
  drm: change DROP_MASTER permissions to allow DRM_MASTER
  drm: annotate drm_core_check_feature() dev arg. as const
  drm: allow render capable master with DRM_AUTH ioctls

 drivers/gpu/drm/drm_ioctl.c | 10 +++++++---
 include/drm/drm_drv.h       |  2 +-
 2 files changed, 8 insertions(+), 4 deletions(-)

Comments

Daniel Vetter Dec. 19, 2018, 8:30 p.m. UTC | #1
On Wed, Dec 19, 2018 at 07:22:44PM +0000, Emil Velikov wrote:
> Hi all,
> 
> This series relaxes some permission handling we have in core.
> 
> The first patch, swaps the DRM_ROOT_ONLY to DRM_MASTER on DROP_MASTER
> ioctls. Thus any application can drop privileges just after SET_MASTER
> and not worry about elevating them, solely for DROP_MASTER.
> 
> The last commit, admittedly works around userspace bugs. Although it's
> far better than the "run as root" approach that people have been using.
> 
> It has the extra side effect of allowing some userspace (but not all)
> to use vgem without any modifications ;-)
> 
> Would be great if this series is checked through the Intel GFX trybot
> but I'm not sure how to do that.

Just cc intel-gfx@lists.freedesktop.org.
-Daniel

> 
> Any comments, review or general ack's are appreciated.
> 
> Thanks
> Emil
> 
> Emil Velikov (3):
>   drm: change DROP_MASTER permissions to allow DRM_MASTER
>   drm: annotate drm_core_check_feature() dev arg. as const
>   drm: allow render capable master with DRM_AUTH ioctls
> 
>  drivers/gpu/drm/drm_ioctl.c | 10 +++++++---
>  include/drm/drm_drv.h       |  2 +-
>  2 files changed, 8 insertions(+), 4 deletions(-)
> 
> -- 
> 2.19.2
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Daniel Vetter Dec. 19, 2018, 8:37 p.m. UTC | #2
On Wed, Dec 19, 2018 at 09:30:46PM +0100, Daniel Vetter wrote:
> On Wed, Dec 19, 2018 at 07:22:44PM +0000, Emil Velikov wrote:
> > Hi all,
> > 
> > This series relaxes some permission handling we have in core.
> > 
> > The first patch, swaps the DRM_ROOT_ONLY to DRM_MASTER on DROP_MASTER
> > ioctls. Thus any application can drop privileges just after SET_MASTER
> > and not worry about elevating them, solely for DROP_MASTER.
> > 
> > The last commit, admittedly works around userspace bugs. Although it's
> > far better than the "run as root" approach that people have been using.
> > 
> > It has the extra side effect of allowing some userspace (but not all)
> > to use vgem without any modifications ;-)
> > 
> > Would be great if this series is checked through the Intel GFX trybot
> > but I'm not sure how to do that.
> 
> Just cc intel-gfx@lists.freedesktop.org.

Even better would be a few igts to exercise this stuff. We have some basic
auth tests, but not much, so running this through the intel CI won't test
much at all.
-Daniel

> -Daniel
> 
> > 
> > Any comments, review or general ack's are appreciated.
> > 
> > Thanks
> > Emil
> > 
> > Emil Velikov (3):
> >   drm: change DROP_MASTER permissions to allow DRM_MASTER
> >   drm: annotate drm_core_check_feature() dev arg. as const
> >   drm: allow render capable master with DRM_AUTH ioctls
> > 
> >  drivers/gpu/drm/drm_ioctl.c | 10 +++++++---
> >  include/drm/drm_drv.h       |  2 +-
> >  2 files changed, 8 insertions(+), 4 deletions(-)
> > 
> > -- 
> > 2.19.2
> > 
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
> 
> -- 
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
Emil Velikov Dec. 20, 2018, 12:56 p.m. UTC | #3
On Wed, 19 Dec 2018 at 20:37, Daniel Vetter <daniel@ffwll.ch> wrote:
>
> On Wed, Dec 19, 2018 at 09:30:46PM +0100, Daniel Vetter wrote:
> > On Wed, Dec 19, 2018 at 07:22:44PM +0000, Emil Velikov wrote:
> > > Hi all,
> > >
> > > This series relaxes some permission handling we have in core.
> > >
> > > The first patch, swaps the DRM_ROOT_ONLY to DRM_MASTER on DROP_MASTER
> > > ioctls. Thus any application can drop privileges just after SET_MASTER
> > > and not worry about elevating them, solely for DROP_MASTER.
> > >
> > > The last commit, admittedly works around userspace bugs. Although it's
> > > far better than the "run as root" approach that people have been using.
> > >
> > > It has the extra side effect of allowing some userspace (but not all)
> > > to use vgem without any modifications ;-)
> > >
> > > Would be great if this series is checked through the Intel GFX trybot
> > > but I'm not sure how to do that.
> >
> > Just cc intel-gfx@lists.freedesktop.org.
Thanks will do.

>
> Even better would be a few igts to exercise this stuff. We have some basic
> auth tests, but not much, so running this through the intel CI won't test
> much at all.

Right, I was thinking about adding something like the following:
- open the primary node - /dev/dri/cardX
- ensure it's not authenticated - by default the first client (or one
run as root) is
- issue a trivial ioctl that's annotated as DRM_AUTH
- fail if the ioctl returns with -EACCESS

Since IGT is usually the first client (or sometimes ran as root), I'm
not quite sure how to achieve the second point.
Any ideas are greatly appreciated.

Thanks
Emil
Daniel Vetter Dec. 20, 2018, 2:43 p.m. UTC | #4
On Thu, Dec 20, 2018 at 12:56:46PM +0000, Emil Velikov wrote:
> On Wed, 19 Dec 2018 at 20:37, Daniel Vetter <daniel@ffwll.ch> wrote:
> >
> > On Wed, Dec 19, 2018 at 09:30:46PM +0100, Daniel Vetter wrote:
> > > On Wed, Dec 19, 2018 at 07:22:44PM +0000, Emil Velikov wrote:
> > > > Hi all,
> > > >
> > > > This series relaxes some permission handling we have in core.
> > > >
> > > > The first patch, swaps the DRM_ROOT_ONLY to DRM_MASTER on DROP_MASTER
> > > > ioctls. Thus any application can drop privileges just after SET_MASTER
> > > > and not worry about elevating them, solely for DROP_MASTER.
> > > >
> > > > The last commit, admittedly works around userspace bugs. Although it's
> > > > far better than the "run as root" approach that people have been using.
> > > >
> > > > It has the extra side effect of allowing some userspace (but not all)
> > > > to use vgem without any modifications ;-)
> > > >
> > > > Would be great if this series is checked through the Intel GFX trybot
> > > > but I'm not sure how to do that.
> > >
> > > Just cc intel-gfx@lists.freedesktop.org.
> Thanks will do.
> 
> >
> > Even better would be a few igts to exercise this stuff. We have some basic
> > auth tests, but not much, so running this through the intel CI won't test
> > much at all.
> 
> Right, I was thinking about adding something like the following:
> - open the primary node - /dev/dri/cardX
> - ensure it's not authenticated - by default the first client (or one
> run as root) is
> - issue a trivial ioctl that's annotated as DRM_AUTH
> - fail if the ioctl returns with -EACCESS
> 
> Since IGT is usually the first client (or sometimes ran as root), I'm
> not quite sure how to achieve the second point.
> Any ideas are greatly appreciated.

Open fd a 2nd time, before closing the first one. For examples see the
various core_* tests, specically core_auth.
-Daniel