From nobody Tue Apr 7 12:20:30 2026 Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1E0B029B799 for ; Fri, 3 Apr 2026 14:52:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775227939; cv=none; b=k7sIX7YsYSJ84qYLS+5o09DzcnhOK/3y1YhUk3tlI5yJzwQERBSSgWOT8O0diwviD0dHReA5ma9U0Olv3McB1kMFXdz7y5jU+qcTPHe4CeJackLs/ph5iYaDZr7TVmW/CwCpCTvCCMhQ3p7JWSiLZayxJCPj4eRJotfMN59MuH0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775227939; c=relaxed/simple; bh=lmxsfZUduwy7OqLm1e9D/nCK/eWLWn3Ez0NBo9uMdOQ=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=By1iWYZD8K3NJ3LLfF8ORxAKN21sH4A3XfxnOTvtN6ABhlJbZfKRM/dPK6lbWmKz2qaQaY3ouOlsbyEhG+kG4l4SKFxvdEO2yoWnAI4ojwC4VLMiUxe6RVMd1WMO5p59PJr6sdyKWxDr8pDqVgjeSIgUvvkRhNAjJCovAVz/sXY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=O5RK4eCJ; arc=none smtp.client-ip=209.85.167.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="O5RK4eCJ" Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-5a2c3dfb4a1so2623351e87.2 for ; Fri, 03 Apr 2026 07:52:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775227936; x=1775832736; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=bTlw1pKeaTzUESwGji3ZkJ8SZ2G06/DfjSApvfBocL0=; b=O5RK4eCJiYrZDJNCBKUCBpzT/1S2VOrp6wKYac080NWF+HfQzGYZBFB+btVJj7MCpl O3Z708gAX6uRByjAloKanSr2OR2mN0GZ1FRQoHkJNw5naFJWQSoJC/stGfH9zRKlRXd9 MuCVXqHvFLHk+sIoruC/fbhUIRcv6exvHi+JZg2XH6xNb0aevSe3luesowk7aBmHEKQh uWOBIaVhJcF+62/KfmMxTyiDO4DtjTXKHhN77THmv5kmC+rJXh5TgNOcCQKGJJ029j8B McUGr/btGyWIvbRXpqYJpROA8BaHx7URjdKGFNKxry76Xa7gUFg1cx0Jem14jm21AsSU 8/zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775227936; x=1775832736; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=bTlw1pKeaTzUESwGji3ZkJ8SZ2G06/DfjSApvfBocL0=; b=aZykPnYAznHzwQB8hKReDyDVzT1WQeutC2Y1+osVAwl65uVnSzCf8Ux2sDiJ0XitzD ibnsltjG7mbxeCs9AkYHJAzwBV4Hn3m7GhCLSSJKtjmbzHM2XhlQ530U/bsYz9RkkoXr 9HbmWlSQJLLwf5SUzbGezDRwCFV4deC4Ycne+SmHuyugPRUOM8uWOCjj9XLuoVCW1bfn yRoLgRNJtEy4Q0adcBsBlm2n52iifgW526k4VSdgeCLmuzze6jwZz1f2UzMw1vKGxxaD KSGPYi8dkJQwvqZBT5mJ48ZVb5pbOUgXWOS8McP5lFm8ZPnwxFEhm5DI6tMF+V946cS0 BkpA== X-Forwarded-Encrypted: i=1; AJvYcCUg196l6zu0kNColAddXeDEGTGP2SXk31mrz0mbarZp7GtRwOd/4HjOjI3XTdDXaYnhQCLhMXRfwJjDdpE=@vger.kernel.org X-Gm-Message-State: AOJu0YwsPYRz5uCP83o2RtuKGP+5VGLm8xrVqUavYT0DbwyoZLL1CnHw V0h9SM7shMWRCdQdcjjBe7qSMNKMNhYs644J0jWkwJ1VET8gnKALEL0L X-Gm-Gg: AeBDietqo72GdDh93aPjfdxPJzLzrb5DbBVK64bfv+iqgyAB542Kjt3x7GK92OjhWWB Km9AwLa8SGaKl1fspeHsltnmQu45S4A7UhyGg+fNDpNgzqJ33cjistV+fb99IcOi6UeDJ9uTLcr VqR1QQgeRx+EbNRAW6cLk2nP0XSPshRx4ZLlWa6ZmmQ/XHp8iPjU5501L0gkxwodBetyh1rePta POaoUJISJESH5SqxJJPwx/fIjLFE5m01LMpBJzG4g4GkO47TQ0EDSOGsnEray50ql+qHpKx/y9c sypfnTnSMPp0vFJMoLhLd4siHZJpkoItYr7PuBvjAAKcuJRtfq4zFBC6vP7btbz9WJPkXeixv1w m/hXKuktCrmyn0y61IxHlPC3Ih4fyhnhCF1tfWqgMa4kTXyNdAM0O3wcVad2b7LS+Q/64q0r+vk oPWpGUMlo1xqvdj2MpK3zaIKTrYUS1KJ5Df1aneTbh6oHB8ZitmwBHuaw9QUmf X-Received: by 2002:ac2:4e0a:0:b0:5a2:787a:fa54 with SMTP id 2adb3069b0e04-5a33756cc8amr1154914e87.18.1775227935969; Fri, 03 Apr 2026 07:52:15 -0700 (PDT) Received: from osama.. ([2a02:908:1b6:8980:a944:abe7:1177:5b7b]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a2c6c95294sm1502331e87.12.2026.04.03.07.52.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Apr 2026 07:52:15 -0700 (PDT) From: Osama Abdelkader To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Luca Ceresoli , =?UTF-8?q?Andr=C3=A9=20Almeida?= , Douglas Anderson , Manikandan Muralidharan , Kees Cook , Osama Abdelkader , Heiko Stuebner , Andy Yan , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH v2] drm/bridge: dw-mipi-dsi: Fix bridge leak when host attach fails Date: Fri, 3 Apr 2026 16:52:05 +0200 Message-ID: <20260403145208.15890-1-osama.abdelkader@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" dw_mipi_dsi_host_attach() and dw_mipi_dsi2_host_attach() call drm_bridge_add() before pdata->host_ops->attach(). If attach fails, the bridge stayed registered without drm_bridge_remove(), leaking the bridge reference and leaving the device on the global bridge list. Fixes: 90910a651123 ("drm/bridge/synopsys: dsi: add ability to have glue-sp= ecific attach and detach") Fixes: 0d6d86253fef ("drm/bridge/synopsys: Add MIPI DSI2 host controller br= idge") Signed-off-by: Osama Abdelkader --- v2: - Use drm_bridge_remove only in the error paths --- drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 6 +++++- drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c b/drivers/gpu/dr= m/bridge/synopsys/dw-mipi-dsi.c index ca4dea226f4b..ef7be20a59cd 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c @@ -345,10 +345,14 @@ static int dw_mipi_dsi_host_attach(struct mipi_dsi_ho= st *host, if (pdata->host_ops && pdata->host_ops->attach) { ret =3D pdata->host_ops->attach(pdata->priv_data, device); if (ret < 0) - return ret; + goto err_remove_bridge; } =20 return 0; + +err_remove_bridge: + drm_bridge_remove(&dsi->bridge); + return ret; } =20 static int dw_mipi_dsi_host_detach(struct mipi_dsi_host *host, diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c b/drivers/gpu/d= rm/bridge/synopsys/dw-mipi-dsi2.c index e6eaf9fd0251..a4bfd3ad166d 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c @@ -540,10 +540,14 @@ static int dw_mipi_dsi2_host_attach(struct mipi_dsi_h= ost *host, if (pdata->host_ops && pdata->host_ops->attach) { ret =3D pdata->host_ops->attach(pdata->priv_data, device); if (ret < 0) - return ret; + goto err_remove_bridge; } =20 return 0; + +err_remove_bridge: + drm_bridge_remove(&dsi2->bridge); + return ret; } =20 static int dw_mipi_dsi2_host_detach(struct mipi_dsi_host *host, --=20 2.43.0