Received: by 2002:a5d:9c59:0:0:0:0:0 with SMTP id 25csp2147571iof; Tue, 7 Jun 2022 21:20:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzXUsZkuN+mtEXWjVDccqd2vUp51yTyq0H6cXsg5sXW7XBO81KAHk8p5YmNv4l1WaC02K1M X-Received: by 2002:a17:90b:2251:b0:1e6:76a8:44f3 with SMTP id hk17-20020a17090b225100b001e676a844f3mr36973181pjb.71.1654662007154; Tue, 07 Jun 2022 21:20:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654662007; cv=none; d=google.com; s=arc-20160816; b=v14SRyTLnpaiRz9nNB9v54lzQ6+8SyMITvOwhQJwGoajJzPM+IEgYmPp4QxzuAD88C ow6O45++I/+LWEI9toOmz2hOygXM7W3B0cDs77vIOyvrD2iTxb3NsROCumleSWMBkMFP 2ZKgpl9Yi5wuwZLj6gR+lYeivu6B3vUTqVzptToKIFb79XBjksIixz/14mcemBbExd0n fX7ugXIptif0albSCeQ1IsuAKoG+zmMwWM6W3ublNqzsXZK8RARXbkfyb7Frf4lwlpx7 cL0vvT2gYM66xrZX4v2XlsZBO9iOuw9Llm6wK+EeOqBNwLUFyYOPe13C9LAoWg0f8IQW aG6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=8touEord1E3kdKs0ZNVzP63dxNCDX9aoiL3NaQ83e8U=; b=DlRayahqRY0u93ZABM8snVbLvuOaqhCBGS+w5LIQ9EyZaBJe+gSh8qhPvt+/FuLW/y G4ZQ0S08QZrgH0OxdlEwAD2h6kq7CgBbklALHoW4xE6EZqmCqmcLKgJB6KUNxNVfizbN g7R/MwItfOfKrDHbaEU0IMxuny9orDRKRWrE0bHpksnPh5JKlBZvGv2eySlUT7TuPFmM N5m30iuakWnmq3Kwf+ucCbqEP8wvTQrJfu+PoM4Dxflqkc53Z+TAlLMMmrwBboiH2G3L BRlwMFpVaZEenh7iN7F+aGOD9La0pHXbLX/cK9css9o8NXKNWsb9fuQsYYzr+6GvAiPD cvxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=SICEqomv; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id z24-20020a63d018000000b003c144fa99d2si26769539pgf.635.2022.06.07.21.20.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 21:20:07 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=SICEqomv; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id DA44C22BADB; Tue, 7 Jun 2022 20:51:12 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1381569AbiFGW3Y (ORCPT + 99 others); Tue, 7 Jun 2022 18:29:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50152 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1380908AbiFGVRI (ORCPT ); Tue, 7 Jun 2022 17:17:08 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D3DF721FBFF; Tue, 7 Jun 2022 11:58:04 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 52523617DA; Tue, 7 Jun 2022 18:58:04 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 620AFC385A2; Tue, 7 Jun 2022 18:58:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1654628283; bh=iOb0nUWMNLkduNeH44/8s0eyZ5TAcg1492StEU120iE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SICEqomvNZa0SqCfmfKaRBZve9/LNvmxP+7stDvlWjbZ/W3VgQrZCgt7CljKHUn8J tnN/gw3H12wCViVmEaXkRHwAV5Z2FB0JUuAgaRsb6GGqGK2VbyVDGtz+7Qc8Kg4P7f Mlrd/y2MEZaHD8tjKX8HWvIUkQKchihxLYPU8XNo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Jani Nikula , Sasha Levin Subject: [PATCH 5.18 272/879] drm/edid: fix invalid EDID extension block filtering Date: Tue, 7 Jun 2022 18:56:30 +0200 Message-Id: <20220607165010.745218657@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220607165002.659942637@linuxfoundation.org> References: <20220607165002.659942637@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jani Nikula [ Upstream commit 3aefc722ff52076407203b6af9713de567993adf ] The invalid EDID block filtering uses the number of valid EDID extensions instead of all EDID extensions for looping the extensions in the copy. This is fine, by coincidence, if all the invalid blocks are at the end of the EDID. However, it's completely broken if there are invalid extensions in the middle; the invalid blocks are included and valid blocks are excluded. Fix it by modifying the base block after, not before, the copy. Fixes: 14544d0937bf ("drm/edid: Only print the bad edid when aborting") Reported-by: Ville Syrjälä Signed-off-by: Jani Nikula Reviewed-by: Ville Syrjälä Link: https://patchwork.freedesktop.org/patch/msgid/20220330170426.349248-1-jani.nikula@intel.com Signed-off-by: Sasha Levin --- drivers/gpu/drm/drm_edid.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index cc7bd58369df..c5b86414873e 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -2031,9 +2031,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) @@ -2050,6 +2047,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.35.1