Re: [PATCH 3/3] drm: Reject DRI1 hw lock ioctl functions for kms drivers

Antoine, Peter
2015-06-23T13:16:35Z

> I've done some extensive history digging across libdrm, mesa and
> xf86-video-{intel,nouveau,ati}. The only potential user of this with
> kms drivers I could find was ttmtest, which once used drmGetLock
> still. But that mistake was quickly fixed up. Even the intel xvmc
> library (which otherwise was really good with using dri1 stuff in kms
> mode) managed to never take the hw lock for dri2 (and hence kms).
>
> Hence it should be save to unconditionally disallow this.
>
> Cc: Peter Antoine <peter.antoine@intel.com>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> ---
> drivers/gpu/drm/drm_lock.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_lock.c b/drivers/gpu/drm/drm_lock.c
> index f861361a635e..4924d381b664 100644
> --- a/drivers/gpu/drm/drm_lock.c
> +++ b/drivers/gpu/drm/drm_lock.c
> @@ -61,6 +61,9 @@ int drm_legacy_lock(struct drm_device *dev, void *data,
> struct drm_master *master = file_priv->master;
> int ret = 0;
>
> + if (drm_core_check_feature(dev, DRIVER_MODESET))
> + return -EINVAL;
> +
> ++file_priv->lock_count;
>
> if (lock->context == DRM_KERNEL_CONTEXT) {
> @@ -153,6 +156,9 @@ int drm_legacy_unlock(struct drm_device *dev, void *data, struct drm_file *file_
> struct drm_lock *lock = data;
> struct drm_master *master = file_priv->master;
>
> + if (drm_core_check_feature(dev, DRIVER_MODESET))
> + return -EINVAL;
> +
> if (lock->context == DRM_KERNEL_CONTEXT) {
> DRM_ERROR("Process %d using kernel context %d\n",
> task_pid_nr(current), lock->context);