aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_drv.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/drm_drv.c')
-rw-r--r--drivers/gpu/drm/drm_drv.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index b55f138bd990..05e197d32c45 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -61,7 +61,7 @@ static int drm_version(struct drm_device *dev, void *data,
61 61
62/** Ioctl table */ 62/** Ioctl table */
63static const struct drm_ioctl_desc drm_ioctls[] = { 63static const struct drm_ioctl_desc drm_ioctls[] = {
64 DRM_IOCTL_DEF(DRM_IOCTL_VERSION, drm_version, DRM_UNLOCKED), 64 DRM_IOCTL_DEF(DRM_IOCTL_VERSION, drm_version, DRM_UNLOCKED|DRM_RENDER_ALLOW),
65 DRM_IOCTL_DEF(DRM_IOCTL_GET_UNIQUE, drm_getunique, 0), 65 DRM_IOCTL_DEF(DRM_IOCTL_GET_UNIQUE, drm_getunique, 0),
66 DRM_IOCTL_DEF(DRM_IOCTL_GET_MAGIC, drm_getmagic, 0), 66 DRM_IOCTL_DEF(DRM_IOCTL_GET_MAGIC, drm_getmagic, 0),
67 DRM_IOCTL_DEF(DRM_IOCTL_IRQ_BUSID, drm_irq_by_busid, DRM_MASTER|DRM_ROOT_ONLY), 67 DRM_IOCTL_DEF(DRM_IOCTL_IRQ_BUSID, drm_irq_by_busid, DRM_MASTER|DRM_ROOT_ONLY),
@@ -332,9 +332,16 @@ long drm_ioctl(struct file *filp,
332 cmd = ioctl->cmd_drv; 332 cmd = ioctl->cmd_drv;
333 } 333 }
334 else if ((nr >= DRM_COMMAND_END) || (nr < DRM_COMMAND_BASE)) { 334 else if ((nr >= DRM_COMMAND_END) || (nr < DRM_COMMAND_BASE)) {
335 u32 drv_size;
336
335 ioctl = &drm_ioctls[nr]; 337 ioctl = &drm_ioctls[nr];
336 cmd = ioctl->cmd; 338
339 drv_size = _IOC_SIZE(ioctl->cmd);
337 usize = asize = _IOC_SIZE(cmd); 340 usize = asize = _IOC_SIZE(cmd);
341 if (drv_size > asize)
342 asize = drv_size;
343
344 cmd = ioctl->cmd;
338 } else 345 } else
339 goto err_i1; 346 goto err_i1;
340 347