Merge tag 'topic/drm-misc-2015-07-23' of git://anongit.freedesktop.org/drm-intel...
[linux-drm-fsl-dcu.git] / drivers / gpu / drm / drm_crtc.c
index 2bbb232e80d7b55ef6f8f7a16d8289405262df78..9b6cdcbbe5bb3beb0d6e0b09ae0936cee8c927d2 100644 (file)
@@ -2706,8 +2706,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;
 
        drm_modeset_lock_all(dev);
@@ -4731,7 +4734,7 @@ int drm_mode_connector_update_edid_property(struct drm_connector *connector,
                return 0;
 
        if (edid)
-               size = EDID_LENGTH + (1 + edid->extensions);
+               size = EDID_LENGTH * (1 + edid->extensions);
 
        ret = drm_property_replace_global_blob(dev,
                                               &connector->edid_blob_ptr,