drm/crtc: Fix edid length computation
authorShixin Zeng <zeng.shixin@gmail.com>
Fri, 3 Jul 2015 06:46:50 +0000 (08:46 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 3 Jul 2015 22:52:34 +0000 (00:52 +0200)
The length of each EDID block is EDID_LENGTH, and number of blocks is
(1 + edid->extensions) - we need to multiply not add them.

This causes wrong EDID to be passed on, and is a regression introduced
by d2ed34362a52 (drm: Introduce helper for replacing blob properties)

Signed-off-by: Shixin Zeng <zeng.shixin@gmail.com>
Cc: Daniel Stone <daniels@collabora.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
[danvet: Add Cc: and fix commit summary.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/drm_crtc.c

index b69ed97d447c9346d4c90b615c7943f06e18bae9..b9ba06176eb1e10c6e4074a7a935a08a50313819 100644 (file)
@@ -4732,7 +4732,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,