From: Emil Velikov emil.velikov@collabora.com
Realistically no drivers, but vmwgfx care about the DRM_AUTH flag here.
Follow-up work in this driver will properly isolate primary clients from different master realms, thus we'll no longer need to parse _any_ ioctl flags.
Until that work lands, add a local workaround.
v2: Use bitwise or (Deepak)
Cc: VMware Graphics linux-graphics-maintainer@vmware.com Cc: Thomas Hellstrom thellstrom@vmware.com Cc: Deepak Singh Rawat drawat@vmware.com Signed-off-by: Emil Velikov emil.velikov@collabora.com --- I'd like to merge this and the next patch hrough the drm-misc tree. Ack and rb are appreciated.
Thanks Emil --- drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c index cd0d49d8a8da..53afb1d597e8 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c @@ -1134,6 +1134,15 @@ static long vmw_generic_ioctl(struct file *filp, unsigned int cmd, } else if (!drm_ioctl_flags(nr, &flags)) return -EINVAL;
+ /* + * Little workaround until the vmwgfx patches providing isolation of + * primary clients from different master realms land. + * With that work, we'll no longer need to parse _any_ ioctl flags. + */ + if (nr == 0x2d /* DRM_IOCTL_PRIME_HANDLE_TO_FD */ || + nr == 0x2e /* DRM_IOCTL_PRIME_FD_TO_HANDLE */) + flags |= DRM_AUTH; + vmaster = vmw_master_check(dev, file_priv, flags); if (IS_ERR(vmaster)) { ret = PTR_ERR(vmaster);
From: Emil Velikov emil.velikov@collabora.com
As mentioned by Christian, for drivers which support only primary nodes this changes the returned error from -EACCES into -EOPNOTSUPP/-ENOSYS.
For others, this check in particular will be a noop. So let's remove it as suggested by Christian.
Cc: Alex Deucher alexander.deucher@amd.com Cc: amd-gfx@lists.freedesktop.org Cc: Daniel Vetter daniel@ffwll.ch Acked-by: Christian König christian.koenig@amd.com Signed-off-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/drm_ioctl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c index f675a3bb2c88..867ab4e50374 100644 --- a/drivers/gpu/drm/drm_ioctl.c +++ b/drivers/gpu/drm/drm_ioctl.c @@ -647,8 +647,8 @@ static const struct drm_ioctl_desc drm_ioctls[] = {
DRM_IOCTL_DEF(DRM_IOCTL_MODE_GETRESOURCES, drm_mode_getresources, 0),
- DRM_IOCTL_DEF(DRM_IOCTL_PRIME_HANDLE_TO_FD, drm_prime_handle_to_fd_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), - DRM_IOCTL_DEF(DRM_IOCTL_PRIME_FD_TO_HANDLE, drm_prime_fd_to_handle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), + DRM_IOCTL_DEF(DRM_IOCTL_PRIME_HANDLE_TO_FD, drm_prime_handle_to_fd_ioctl, DRM_RENDER_ALLOW), + DRM_IOCTL_DEF(DRM_IOCTL_PRIME_FD_TO_HANDLE, drm_prime_fd_to_handle_ioctl, DRM_RENDER_ALLOW),
DRM_IOCTL_DEF(DRM_IOCTL_MODE_GETPLANERESOURCES, drm_mode_getplane_res, 0), DRM_IOCTL_DEF(DRM_IOCTL_MODE_GETCRTC, drm_mode_getcrtc, 0),
Hi Emil,
Thanks for doing this. Looks good to me. By the way I think Thomas had a patch to get rid of legacy locking mechanism. I don't know when it will go upstream. With that we no need for the below check.
Reviewed-by: Deepak Rawat drawat@vmware.com
On Fri, 2019-08-02 at 18:01 +0100, Emil Velikov wrote:
From: Emil Velikov emil.velikov@collabora.com
Realistically no drivers, but vmwgfx care about the DRM_AUTH flag here.
Follow-up work in this driver will properly isolate primary clients from different master realms, thus we'll no longer need to parse _any_ ioctl flags.
Until that work lands, add a local workaround.
v2: Use bitwise or (Deepak)
Cc: VMware Graphics linux-graphics-maintainer@vmware.com Cc: Thomas Hellstrom thellstrom@vmware.com Cc: Deepak Singh Rawat drawat@vmware.com Signed-off-by: Emil Velikov emil.velikov@collabora.com
I'd like to merge this and the next patch hrough the drm-misc tree. Ack and rb are appreciated.
Thanks Emil
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c index cd0d49d8a8da..53afb1d597e8 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c @@ -1134,6 +1134,15 @@ static long vmw_generic_ioctl(struct file *filp, unsigned int cmd, } else if (!drm_ioctl_flags(nr, &flags)) return -EINVAL;
- /*
* Little workaround until the vmwgfx patches providing
isolation of
* primary clients from different master realms land.
* With that work, we'll no longer need to parse _any_ ioctl
flags.
*/
- if (nr == 0x2d /* DRM_IOCTL_PRIME_HANDLE_TO_FD */ ||
nr == 0x2e /* DRM_IOCTL_PRIME_FD_TO_HANDLE */)
flags |= DRM_AUTH;
- vmaster = vmw_master_check(dev, file_priv, flags); if (IS_ERR(vmaster)) { ret = PTR_ERR(vmaster);
On Mon, 5 Aug 2019 at 16:37, Deepak Singh Rawat drawat@vmware.com wrote:
Hi Emil,
Thanks for doing this. Looks good to me. By the way I think Thomas had a patch to get rid of legacy locking mechanism. I don't know when it will go upstream. With that we no need for the below check.
Agreed the patches were part of the 5.3-rc1 pull request to Linus. Sadly the whole vmwgfx branch was reverted [1] :-(
Once that re-lands, we can remove this temporary workaround.
Reviewed-by: Deepak Rawat drawat@vmware.com
Great, thank you.
-Emil
[1] https://lists.freedesktop.org/archives/dri-devel/2019-July/226542.html
dri-devel@lists.freedesktop.org