drm: Reject page_flip for !DRIVER_MODESET
[pandora-kernel.git] / drivers / gpu / drm / drm_drv.c
index 40c187c..0731d43 100644 (file)
@@ -408,9 +408,16 @@ long drm_ioctl(struct file *filp,
                        asize = drv_size;
        }
        else if ((nr >= DRM_COMMAND_END) || (nr < DRM_COMMAND_BASE)) {
+               u32 drv_size;
+
                ioctl = &drm_ioctls[nr];
-               cmd = ioctl->cmd;
+
+               drv_size = _IOC_SIZE(ioctl->cmd);
                usize = asize = _IOC_SIZE(cmd);
+               if (drv_size > asize)
+                       asize = drv_size;
+
+               cmd = ioctl->cmd;
        } else
                goto err_i1;
 
@@ -449,8 +456,9 @@ long drm_ioctl(struct file *filp,
                                retcode = -EFAULT;
                                goto err_i1;
                        }
-               } else
+               } else if (cmd & IOC_OUT) {
                        memset(kdata, 0, usize);
+               }
 
                if (ioctl->flags & DRM_UNLOCKED)
                        retcode = func(dev, kdata, file_priv);