[PATCH] drm: Skip too big EDID extensions
Takashi Iwai
tiwai at suse.de
Tue Jun 5 08:41:58 PDT 2012
When the number of extension blocks in EDID is too big, it's more
likely a broken data, thus better to skip them.
We've got a bug report that a machine spews "invalid block EDID"
errors at boot for 400 times which delays the boot very much, and this
patch fixes it. Certainly it's a hardware-specific problem, but it's
anyway safer to avoid such almost unrealistic setups.
Signed-off-by: Takashi Iwai <tiwai at suse.de>
---
drivers/gpu/drm/drm_edid.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index eb92fe2..61e4cf1 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -321,6 +321,13 @@ drm_do_get_edid(struct drm_connector *connector, struct i2c_adapter *adapter)
if (i == 4)
goto carp;
+ if (block[0x7e] > 20) {
+ /* too many extensions -- something is wrong */
+ DRM_DEBUG_KMS("drm: %s: ignoring too many extensions %d\n",
+ adapter->name, block[0x7e]);
+ block[0x7e] = 0;
+ }
+
/* if there's no extensions, we're done */
if (block[0x7e] == 0)
return block;
--
1.7.10.3
More information about the dri-devel
mailing list