From faab585cf7d94d8a6a0f56547ec112850d71cc70 Mon Sep 17 00:00:00 2001 From: jsg Date: Fri, 10 Jun 2022 01:15:31 +0000 Subject: [PATCH] drm/edid: fix invalid EDID extension block filtering From Jani Nikula 96db9afa4958bbaee77995eb0c84e08cdcce74ae in linux 5.15.y/5.15.46 3aefc722ff52076407203b6af9713de567993adf in mainline linux --- sys/dev/pci/drm/drm_edid.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/dev/pci/drm/drm_edid.c b/sys/dev/pci/drm/drm_edid.c index 895587a0f15..8f54eeef655 100644 --- a/sys/dev/pci/drm/drm_edid.c +++ b/sys/dev/pci/drm/drm_edid.c @@ -2002,9 +2002,6 @@ struct edid *drm_do_get_edid(struct drm_connector *connector, connector_bad_edid(connector, edid, edid[0x7e] + 1); - edid[EDID_LENGTH-1] += edid[0x7e] - valid_extensions; - edid[0x7e] = valid_extensions; - new = kmalloc_array(valid_extensions + 1, EDID_LENGTH, GFP_KERNEL); if (!new) @@ -2021,6 +2018,9 @@ struct edid *drm_do_get_edid(struct drm_connector *connector, base += EDID_LENGTH; } + new[EDID_LENGTH - 1] += new[0x7e] - valid_extensions; + new[0x7e] = valid_extensions; + kfree(edid); edid = new; } -- 2.20.1