drm: add a check for x/y in drm_mode_setcrtc
[pandora-kernel.git] / drivers / gpu / drm / drm_crtc.c
index 0e716fd..20110b4 100644 (file)
@@ -1505,8 +1505,11 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
        if (!drm_core_check_feature(dev, DRIVER_MODESET))
                return -EINVAL;
 
-       /* For some reason crtc x/y offsets are signed internally. */
-       if (crtc_req->x > INT_MAX || crtc_req->y > INT_MAX)
+       /*
+        * Universal plane src offsets are only 16.16, prevent havoc for
+        * drivers using universal plane code internally.
+        */
+       if (crtc_req->x & 0xffff0000 || crtc_req->y & 0xffff0000)
                return -ERANGE;
 
        mutex_lock(&dev->mode_config.mutex);