Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 858a3685 authored by Dave Airlie's avatar Dave Airlie
Browse files

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: default avatarDave Airlie <airlied@redhat.com>
parent d3adbc0c
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -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;