From: Dave Airlie <airlied@redhat.com>
Date: Fri, 20 Jun 2008 05:42:38 +0000 (+1000)
Subject: drm: only trust core drm ioctls - driver ioctls are a mess.
X-Git-Tag: v5.15~39595^2
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=858a3685bcf3ac199128e4aa85eaae2fb9d191b5;p=platform%2Fkernel%2Flinux-starfive.git

drm: only trust core drm ioctls - driver ioctls are a mess.

So driver ioctls need a full auditing before we can make this change.

Signed-off-by: Dave Airlie <airlied@redhat.com>
---

diff --git a/drivers/char/drm/drm_drv.c b/drivers/char/drm/drm_drv.c
index 22957ac15df4..564138714bb5 100644
--- a/drivers/char/drm/drm_drv.c
+++ b/drivers/char/drm/drm_drv.c
@@ -470,19 +470,18 @@ int drm_ioctl(struct inode *inode, struct file *filp,
 	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))
+	else if ((nr >= DRM_COMMAND_END) || (nr < DRM_COMMAND_BASE)) {
 		ioctl = &drm_ioctls[nr];
-	else
+		cmd = ioctl->cmd;
+	} else
 		goto err_i1;
 
 	/* Do not trust userspace, use our own definition */
-	cmd = ioctl->cmd;
 	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");
 		retcode = -EINVAL;