drm: use drms ioctl cmd not what we get passed from userspace.
authorJohannes Weiner <hannes@saeurebad.de>
Fri, 13 Jun 2008 05:04:40 +0000 (15:04 +1000)
committerDave Airlie <airlied@redhat.com>
Fri, 13 Jun 2008 05:04:40 +0000 (15:04 +1000)
This enforces us to use the drm ioctl types so read/write works correctly and not believe
what userspace tells us.

It does this hopefully without breaking the drm api.

Fixes bug from thread: BUG: unable to handle kernel NULL pointer dereference (drm_getunique)

Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/char/drm/drm_drv.c

index fc54140551a71620d747aa27466ad8f1d4101376..22957ac15df424caf662709881e4712248abf699 100644 (file)
@@ -475,6 +475,8 @@ int drm_ioctl(struct inode *inode, struct file *filp,
        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)