diff options
author | Thomas Hellstrom <thomas-at-tungstengraphics-dot-com> | 2007-03-19 08:52:17 +1100 |
---|---|---|
committer | Dave Airlie <airlied@linux.ie> | 2007-03-19 08:52:17 +1100 |
commit | 99da6d861c659bb1a961b70f50fad268b9ed5a5f (patch) | |
tree | aaa921d73006211ccfce0d9ae1bea55d8cb5e214 /drivers/char/drm/drm_drv.c | |
parent | 6244270ef62203e057191bf85489e2ff91cc0e60 (diff) |
drm: allow for more generic drm ioctls
Signed-off-by: Dave Airlie <airlied@linux.ie>
Diffstat (limited to 'drivers/char/drm/drm_drv.c')
-rw-r--r-- | drivers/char/drm/drm_drv.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/char/drm/drm_drv.c b/drivers/char/drm/drm_drv.c index f5b9b2480c1..26bec30ee86 100644 --- a/drivers/char/drm/drm_drv.c +++ b/drivers/char/drm/drm_drv.c @@ -496,11 +496,14 @@ int drm_ioctl(struct inode *inode, struct file *filp, (long)old_encode_dev(priv->head->device), priv->authenticated); - if (nr < DRIVER_IOCTL_COUNT) - ioctl = &drm_ioctls[nr]; - else if ((nr >= DRM_COMMAND_BASE) + if ((nr >= DRIVER_IOCTL_COUNT) && + ((nr < DRM_COMMAND_BASE) || (nr >= DRM_COMMAND_END))) + goto err_i1; + if ((nr >= DRM_COMMAND_BASE) && (nr < DRM_COMMAND_END) && (nr < DRM_COMMAND_BASE + dev->driver->num_ioctls)) ioctl = &dev->driver->ioctls[nr - DRM_COMMAND_BASE]; + else if ((nr >= DRM_COMMAND_END) || (nr < DRM_COMMAND_BASE)) + ioctl = &drm_ioctls[nr]; else goto err_i1; |