From c7f57dd452bf1be9ae7eaa7f064366612992a335 Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Mon, 19 Mar 2007 08:52:17 +1100 Subject: [PATCH] --- yaml --- r: 54439 b: refs/heads/master c: 99da6d861c659bb1a961b70f50fad268b9ed5a5f h: refs/heads/master i: 54437: 9f3777823887d67e2fe2fe29c2867428087621f0 54435: cf796094530fe5fafd352afde70a7ea6137c8ddc 54431: b6a936da710a1b61f7a3848428718fcf949ab5a4 v: v3 --- [refs] | 2 +- trunk/drivers/char/drm/drm.h | 4 +++- trunk/drivers/char/drm/drm_drv.c | 9 ++++++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 27deec3fda2a..63f7faffde81 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6244270ef62203e057191bf85489e2ff91cc0e60 +refs/heads/master: 99da6d861c659bb1a961b70f50fad268b9ed5a5f diff --git a/trunk/drivers/char/drm/drm.h b/trunk/drivers/char/drm/drm.h index 8db9041e306c..089198491f16 100644 --- a/trunk/drivers/char/drm/drm.h +++ b/trunk/drivers/char/drm/drm.h @@ -654,11 +654,13 @@ typedef struct drm_set_version { /** * Device specific ioctls should only be in their respective headers - * The device specific ioctl range is from 0x40 to 0x79. + * The device specific ioctl range is from 0x40 to 0x99. + * Generic IOCTLS restart at 0xA0. * * \sa drmCommandNone(), drmCommandRead(), drmCommandWrite(), and * drmCommandReadWrite(). */ #define DRM_COMMAND_BASE 0x40 +#define DRM_COMMAND_END 0xA0 #endif diff --git a/trunk/drivers/char/drm/drm_drv.c b/trunk/drivers/char/drm/drm_drv.c index f5b9b2480c14..26bec30ee86e 100644 --- a/trunk/drivers/char/drm/drm_drv.c +++ b/trunk/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;