From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Herrmann Subject: Re: [PATCH 19/25] drm: remove the dma_ioctl special-case Date: Tue, 13 Aug 2013 20:05:26 +0200 Message-ID: References: <1375969295-18929-1-git-send-email-daniel.vetter@ffwll.ch> <1375969295-18929-20-git-send-email-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-ie0-f171.google.com (mail-ie0-f171.google.com [209.85.223.171]) by gabe.freedesktop.org (Postfix) with ESMTP id AC247E64BA for ; Tue, 13 Aug 2013 11:05:27 -0700 (PDT) Received: by mail-ie0-f171.google.com with SMTP id 10so1434443ied.2 for ; Tue, 13 Aug 2013 11:05:27 -0700 (PDT) In-Reply-To: <1375969295-18929-20-git-send-email-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: Daniel Vetter Cc: DRI Development List-Id: dri-devel@lists.freedesktop.org Hi On Thu, Aug 8, 2013 at 3:41 PM, Daniel Vetter wrote: > We might as well have a real ioctl function which checks for the > callbacks. This seems to be a remnant from back in the days when each > drm driver had their own complete ioctl table, with no shared core > drm table at all. > > To make really sure no mis-guided user in a kms driver pops up again > explicitly check for that in the new ioctl implementation. > > v2: Drop the unused variable I've accidentally left in the code, > spotted by David Herrmann. > > Cc: David Herrmann > Signed-off-by: Daniel Vetter Reviewed-by: David Herrmann Regards David > --- > drivers/gpu/drm/drm_bufs.c | 12 ++++++++++++ > drivers/gpu/drm/drm_drv.c | 6 +----- > include/drm/drmP.h | 2 ++ > 3 files changed, 15 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/drm_bufs.c b/drivers/gpu/drm/drm_bufs.c > index f63133b..471e051d 100644 > --- a/drivers/gpu/drm/drm_bufs.c > +++ b/drivers/gpu/drm/drm_bufs.c > @@ -1455,6 +1455,18 @@ int drm_mapbufs(struct drm_device *dev, void *data, > return retcode; > } > > +int drm_dma_ioctl(struct drm_device *dev, void *data, > + struct drm_file *file_priv) > +{ > + if (drm_core_check_feature(dev, DRIVER_MODESET)) > + return -EINVAL; > + > + if (dev->driver->dma_ioctl) > + return dev->driver->dma_ioctl(dev, data, file_priv); > + else > + return -EINVAL; > +} > + > struct drm_local_map *drm_getsarea(struct drm_device *dev) > { > struct drm_map_list *entry; > diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c > index 5b949a7..83078cd 100644 > --- a/drivers/gpu/drm/drm_drv.c > +++ b/drivers/gpu/drm/drm_drv.c > @@ -106,8 +106,7 @@ static const struct drm_ioctl_desc drm_ioctls[] = { > DRM_IOCTL_DEF(DRM_IOCTL_INFO_BUFS, drm_infobufs, DRM_AUTH), > DRM_IOCTL_DEF(DRM_IOCTL_MAP_BUFS, drm_mapbufs, DRM_AUTH), > DRM_IOCTL_DEF(DRM_IOCTL_FREE_BUFS, drm_freebufs, DRM_AUTH), > - /* The DRM_IOCTL_DMA ioctl should be defined by the driver. */ > - DRM_IOCTL_DEF(DRM_IOCTL_DMA, NULL, DRM_AUTH), > + DRM_IOCTL_DEF(DRM_IOCTL_DMA, drm_dma_ioctl, DRM_AUTH), > > DRM_IOCTL_DEF(DRM_IOCTL_CONTROL, drm_control, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > > @@ -395,9 +394,6 @@ long drm_ioctl(struct file *filp, > > /* Do not trust userspace, use our own definition */ > func = ioctl->func; > - /* is there a local override? */ > - if ((nr == DRM_IOCTL_NR(DRM_IOCTL_DMA)) && dev->driver->dma_ioctl) > - func = dev->driver->dma_ioctl; > > if (!func) { > DRM_DEBUG("no function\n"); > diff --git a/include/drm/drmP.h b/include/drm/drmP.h > index 5b9462d..2a2a5b7 100644 > --- a/include/drm/drmP.h > +++ b/include/drm/drmP.h > @@ -1366,6 +1366,8 @@ extern int drm_freebufs(struct drm_device *dev, void *data, > struct drm_file *file_priv); > extern int drm_mapbufs(struct drm_device *dev, void *data, > struct drm_file *file_priv); > +extern int drm_dma_ioctl(struct drm_device *dev, void *data, > + struct drm_file *file_priv); > > /* DMA support (drm_dma.h) */ > extern int drm_legacy_dma_setup(struct drm_device *dev); > -- > 1.8.3.2 >