From nobody Sun Dec 28 21:03:46 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6C11FC07E97 for ; Tue, 5 Dec 2023 10:54:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1376705AbjLEKyE (ORCPT ); Tue, 5 Dec 2023 05:54:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50960 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1376606AbjLEKyA (ORCPT ); Tue, 5 Dec 2023 05:54:00 -0500 Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com [IPv6:2a00:1450:4864:20::22d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 13E17109 for ; Tue, 5 Dec 2023 02:54:07 -0800 (PST) Received: by mail-lj1-x22d.google.com with SMTP id 38308e7fff4ca-2c9f572c4c5so40939441fa.2 for ; Tue, 05 Dec 2023 02:54:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1701773645; x=1702378445; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fu0Px4Tbxip0tKoFWKIyTvbcuMI1IJ2fyAiFtPcJOWc=; b=b8WPXIpgLqjlmT/oCeG7Bt+qzOSMQ+Urp6mTEYH67oqWB7KgxyrQ/UZbBzMWMoZ50c RerIoC0DV/pO/PViB/q6itggmld6wrBHH3blX+NsXCqBFdinr5VYJ/xQJagDZ8yFAfYA LDms3dqmo5VjM3QUxjzCKS/RuM/1LggQh+TQg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701773645; x=1702378445; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fu0Px4Tbxip0tKoFWKIyTvbcuMI1IJ2fyAiFtPcJOWc=; b=Ou5uDE3gdMAtM+gESEJNO8cK9Em9YZNeFT8CmQuP2uqs34g4glb4hpb744cIXSzYnm lUX4tKeMQQTGV64PPw1rBzjdN+0QAuAOzHidgHx3nGg/zoFGF5ApYx/2KjpxDjpZkaDs 9PJK0dotcu+CMW70W5Jz+JV20uPe//fOOTnS0K54OY2kiby7V1DhLJTkT4pQoMlOmnEp cAw4cIlwB14ZOF+wfP12o+OBi4rF8iKBA3Av5FG7yW1jELQim9plPHmOU3e4rU00tlSP xlI3EqGb+fspVLBRgh7mJxMpmjpHxwJyMaBsuAkOtW3OAs7VqNEafqVPRPsTja2Z4zyT 7z8w== X-Gm-Message-State: AOJu0YwHpi3sOTXyRQVCyQRfHtfwkqUjqt5mhkPz9GEFO3CAGD+CirsO Dmteh+5eGPnbBmAlmngFSK3WO4K0lHbOL14aHxZgrQ== X-Google-Smtp-Source: AGHT+IH2ACowoJoO+30xriMCkLCXsinUnSHTDGh9ilzVZ9c8a5SVKoBwYjDDlS2Qdi+JBVbyncICpQ== X-Received: by 2002:ac2:4c8c:0:b0:50b:fe3f:8086 with SMTP id d12-20020ac24c8c000000b0050bfe3f8086mr1104607lfl.53.1701773645010; Tue, 05 Dec 2023 02:54:05 -0800 (PST) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-82-54-95-129.retail.telecomitalia.it. [82.54.95.129]) by smtp.gmail.com with ESMTPSA id n23-20020a170906089700b0099297782aa9sm6413491eje.49.2023.12.05.02.54.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Dec 2023 02:54:04 -0800 (PST) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: Amarula patchwork , michael@amarulasolutions.com, Dario Binacchi , Andrzej Hajda , Daniel Vetter , Dave Stevenson , David Airlie , Frieder Schrempf , Jernej Skrabec , Jonas Karlman , Laurent Pinchart , Maarten Lankhorst , Maxime Ripard , Neil Armstrong , Robert Foss , Thomas Zimmermann , dri-devel@lists.freedesktop.org Subject: [PATCH v4 02/10] drm/bridge: Fix a use case in the bridge disable logic Date: Tue, 5 Dec 2023 11:52:49 +0100 Message-ID: <20231205105341.4100896-3-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231205105341.4100896-1-dario.binacchi@amarulasolutions.com> References: <20231205105341.4100896-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The patch fixes the code for finding the next bridge with the "pre_enable_prev_first" flag set to false. In case this condition is not verified, i. e. there is no subsequent bridge with the flag set to false, the whole bridge list is traversed, invalidating the "next" variable. The use of a new iteration variable (i. e. "iter") ensures that the value of the "next" variable is not invalidated. Fixes: 4fb912e5e190 ("drm/bridge: Introduce pre_enable_prev_first to alter = bridge init order") Co-developed-by: Michael Trimarchi Signed-off-by: Michael Trimarchi Signed-off-by: Dario Binacchi --- (no changes since v1) drivers/gpu/drm/drm_bridge.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index f66bf4925dd8..2e5781bf192e 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -662,7 +662,7 @@ void drm_atomic_bridge_chain_post_disable(struct drm_br= idge *bridge, struct drm_atomic_state *old_state) { struct drm_encoder *encoder; - struct drm_bridge *next, *limit; + struct drm_bridge *iter, *next, *limit; =20 if (!bridge) return; @@ -680,14 +680,15 @@ void drm_atomic_bridge_chain_post_disable(struct drm_= bridge *bridge, * was enabled first, so disabled last */ limit =3D next; + iter =3D next; =20 /* Find the next bridge that has NOT requested * prev to be enabled first / disabled last */ - list_for_each_entry_from(next, &encoder->bridge_chain, + list_for_each_entry_from(iter, &encoder->bridge_chain, chain_node) { - if (!next->pre_enable_prev_first) { - next =3D list_prev_entry(next, chain_node); + if (!iter->pre_enable_prev_first) { + next =3D list_prev_entry(iter, chain_node); limit =3D next; break; } --=20 2.43.0