From: Emil Velikov <emil.l.velikov@gmail.com>
To: Thomas Hellstrom <thellstrom@vmware.com>
Cc: "kernel@collabora.com" <kernel@collabora.com>,
Linux-graphics-maintainer <Linux-graphics-maintainer@vmware.com>,
"dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH 4/5] drm/vmwgfx: remove custom ioctl io encoding check
Date: Mon, 27 May 2019 10:08:26 +0100 [thread overview]
Message-ID: <20190527090826.GA13920@arch-x1c3> (raw)
In-Reply-To: <7dd79b21d58dc74b9b2d81d6aa812fe8d4564596.camel@vmware.com>
On 2019/05/25, Thomas Hellstrom wrote:
> On Sat, 2019-05-25 at 00:39 +0200, Thomas Hellström wrote:
> > Hi, Emil
> >
> > On Fri, 2019-05-24 at 16:26 +0100, Emil Velikov wrote:
> > > On 2019/05/24, Thomas Hellstrom wrote:
> > > > On Fri, 2019-05-24 at 13:14 +0100, Emil Velikov wrote:
> > > > > On 2019/05/23, Thomas Hellstrom wrote:
> > > > > > Hi, Emil,
> > > > > >
> > > > > > On Wed, 2019-05-22 at 17:41 +0100, Emil Velikov wrote:
> > > > > > > From: Emil Velikov <emil.velikov@collabora.com>
> > > > > > >
> > > > > > > Drop the custom ioctl io encoding check - core drm does it
> > > > > > > for
> > > > > > > us.
> > > > > >
> > > > > > I fail to see where the core does this, or do I miss
> > > > > > something?
> > > > >
> > > > > drm_ioctl() allows for the encoding to be changed and
> > > > > attributes
> > > > > that
> > > > > only the
> > > > > appropriate size is copied in/out of the kernel.
> > > > >
> > > > > Technically the function is more relaxed relative to the vmwgfx
> > > > > check, yet
> > > > > seems perfectly reasonable.
> > > > >
> > > > > Is there any corner-case that isn't but should be handled in
> > > > > drm_ioctl()?
> > > >
> > > > I'd like to turn the question around and ask whether there's a
> > > > reason
> > > > we should relax the vmwgfx test? In the past it has trapped quite
> > > > a
> > > > few
> > > > user-space errors.
> > > >
> > > The way I see it either:
> > > - the check, as-is, is unnessesary, or
> > > - it is needed, and we should do something equivalent for all of
> > > DRM
> > >
> > > We had a very long brainstorming session with a colleague and we
> > > could not see
> > > any cases where this would cause a problem. If you recall anything
> > > concrete
> > > please let me know - I would be more than happy to take a closer
> > > look.
> >
> > If you have a good reason to drop an ioctl sanity check, I'd be
> > perfectly happy to do it. To me, a good reason even includes "I have
> > a
> > non-open-source customer having problems with this check" because of
> > reason etc. etc. as long as I have a way to evaluate those reasons
> > and
> > determine if they're valid or not. "No other drm driver nor the core
> > is
> > doing this" is NOT a valid reason to me. In particular if the check
> > is
> > not affecting performance. So unless you provide additional reasons
> > to
> > drop this check, it's a solid NAK from my side.
>
> To clarify my point of view a bit, this check is useful to early catch
> userspace using incorrect flags and sizes, which otherwise might make
> it out to distros and after that, introducing a check like this would
> be impossible, since it might break old user-space. For the same reason
> it would probably be very difficult to introduce it in core drm.
>
I think we might be talking past each other, let's take a step back:
- as of previous patch, all of vmwgfx ioctls size is consistently
handled by the core
- handling of featue flags, as always, is responsibility of the driver
ifself
- with this patch, ioctl direction is also handled by core.
Here core ensures we only copy in/out as much data as the kernel
implementation can handle.
Let's consider the following real world example - msm and virtio_gpu.
An in field of an _IOW ioctl becomes in/out aka _IORW ioctl.
- we add a flag to annotate/request the out, as always invalid flags
are return -EINVAL
- we change the ioctl encoding
As currently handled by core DRM, old kernel/new userspace and
vice-versa works just fine. Sadly, vmwgfx will error out, while it could
be avoided.
As said above, I'll gladly adjust core and/or others, if this relaxed
approach causes an issue somewhere. A specific use-case, real or
hypothetical will be appreciated.
All this is part of an "evil" plan of mine, to port cool features from
vmwgfx to core and effectively remove the vmw_generic_ioctl() wrapper.
Hope the bigger picture is clearer now, if not please let me know.
Thanks
Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2019-05-27 9:09 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-22 16:41 [PATCH 1/5] vmwgfx: drop empty lastclose stub Emil Velikov
2019-05-22 16:41 ` [PATCH 2/5] drm/vmgfx: kill off unused init_mutex Emil Velikov
2019-05-23 6:48 ` Thomas Hellstrom
2019-05-22 16:41 ` [PATCH 3/5] drm/vmwgfx: use core drm to extend/check vmw_execbuf_ioctl Emil Velikov
2019-05-22 19:01 ` Thomas Hellstrom
2019-05-22 19:09 ` Daniel Vetter
2019-05-24 6:05 ` Thomas Hellstrom
2019-05-24 7:46 ` Daniel Vetter
2019-05-24 10:53 ` Emil Velikov
2019-05-24 10:56 ` Thomas Hellstrom
2019-05-23 8:52 ` Thomas Hellstrom
2019-05-22 16:41 ` [PATCH 4/5] drm/vmwgfx: remove custom ioctl io encoding check Emil Velikov
2019-05-23 6:44 ` Thomas Hellstrom
2019-05-24 12:14 ` Emil Velikov
2019-05-24 13:04 ` Thomas Hellstrom
2019-05-24 15:26 ` Emil Velikov
2019-05-24 22:39 ` Thomas Hellstrom
2019-05-25 8:25 ` Thomas Hellstrom
2019-05-27 9:08 ` Emil Velikov [this message]
2019-05-27 11:34 ` Thomas Hellstrom
2019-05-27 12:35 ` Emil Velikov
2019-05-27 13:44 ` Thomas Hellstrom
2019-05-27 15:27 ` Emil Velikov
2019-05-27 15:50 ` Thomas Hellstrom
2019-05-27 16:36 ` Emil Velikov
2019-05-22 16:41 ` [PATCH 5/5] drm: make drm_ioctl_permit() internal Emil Velikov
2019-05-23 6:47 ` [PATCH 1/5] vmwgfx: drop empty lastclose stub Thomas Hellstrom
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=20190527090826.GA13920@arch-x1c3 \
--to=emil.l.velikov@gmail.com \
--cc=Linux-graphics-maintainer@vmware.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=kernel@collabora.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.