From nobody Thu Oct 2 02:05:51 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E9795255222; Tue, 23 Sep 2025 15:26:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758641173; cv=none; b=SdDnaYVbftK56YhO31wJYk8wRjIjYch1gGXIM8Hz1I8hJ85O5XXW9pCoAIAdVrf6pqI7npIe5c8DA+kq0y963wFPYCYlDHtbm7spUcWWqbKJJxakLz6f3V6bcMnfQAp93xPXcdlj/zkZH9j5SndJqgTGMFAsY6LLHVYRZTF55kE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758641173; c=relaxed/simple; bh=PsJAbGUFgpe5g/scTy+yXdnPAge1y+ZrMfeoR4lXF1w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZK8zFOBT/njDT4qzjZeAPEj7pGVwda/y7pSvAA2i0FM/eFtalQH5Fvv5WGGWVxtoBioYFqwVMuwfjSu8n0iYiBN7jUubGOUWXOCH3ZRsTh10w+YKZ+IVbYbqVe6WnWQ+tyL6Wmx/1dWij7pe9GWIIaE/P7Y0KuxI+uJZjv4Sgmo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Ma1flkly; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Ma1flkly" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8CDD6C113CF; Tue, 23 Sep 2025 15:26:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758641172; bh=PsJAbGUFgpe5g/scTy+yXdnPAge1y+ZrMfeoR4lXF1w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ma1flkly2f1uNKpKvOHlthl8/236GxH1+vA8DkFIHwHZLexNBGq/13eI7BbrDbRdI zqBh+mSWGWvPQGcpLc2IfjKRzI0MT/C4b6RvTyIxYh6X5ZL4dPb66bhz1wNSKrkKzf 2+zhu1vcxxincXvOtKJImCbVAXGB8Rg6vYl36l7L0JluiBbx8pBPJWi09fsRO4l1h2 XZaU5mGu9+SpQ3OM1hIshkwBJcTuAX/MDnVwmZTeU965zJptw8QSoopk1Rw+2swTcz f2p+NdEmTzxmMpGmmEi5NusSgPtXqRWZNlsEHhjNMAtfrPIkM71N5ySZiHW54Js25y A91X7vxSnxdrA== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1v14u6-000000004mo-3m3w; Tue, 23 Sep 2025 17:26:06 +0200 From: Johan Hovold To: Chun-Kuang Hu , Philipp Zabel Cc: David Airlie , Simona Vetter , Matthias Brugger , AngeloGioacchino Del Regno , dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org, CK Hu Subject: [PATCH 1/5] drm/mediatek: fix probe resource leaks Date: Tue, 23 Sep 2025 17:23:36 +0200 Message-ID: <20250923152340.18234-2-johan@kernel.org> X-Mailer: git-send-email 2.49.1 In-Reply-To: <20250923152340.18234-1-johan@kernel.org> References: <20250923152340.18234-1-johan@kernel.org> 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" Make sure to unmap and release the component iomap and clock on probe failure (e.g. probe deferral) and on driver unbind. Note that unlike of_iomap(), devm_of_iomap() also checks whether the region is already mapped. Fixes: 119f5173628a ("drm/mediatek: Add DRM Driver for Mediatek SoC MT8173.= ") Cc: stable@vger.kernel.org # 4.7 Cc: CK Hu Signed-off-by: Johan Hovold Reviewed-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/mediatek/mtk_ddp_comp.c | 20 ++++++++++++++++---- drivers/gpu/drm/mediatek/mtk_ddp_comp.h | 2 +- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 4 ++-- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/mediatek/mtk_ddp_comp.c b/drivers/gpu/drm/medi= atek/mtk_ddp_comp.c index ac6620e10262..0264017806ad 100644 --- a/drivers/gpu/drm/mediatek/mtk_ddp_comp.c +++ b/drivers/gpu/drm/mediatek/mtk_ddp_comp.c @@ -621,15 +621,20 @@ int mtk_find_possible_crtcs(struct drm_device *drm, s= truct device *dev) return ret; } =20 -int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp, +static void mtk_ddp_comp_clk_put(void *_clk) +{ + struct clk *clk =3D _clk; + + clk_put(clk); +} + +int mtk_ddp_comp_init(struct device *dev, struct device_node *node, struct= mtk_ddp_comp *comp, unsigned int comp_id) { struct platform_device *comp_pdev; enum mtk_ddp_comp_type type; struct mtk_ddp_comp_dev *priv; -#if IS_REACHABLE(CONFIG_MTK_CMDQ) int ret; -#endif =20 if (comp_id >=3D DDP_COMPONENT_DRM_ID_MAX) return -EINVAL; @@ -670,11 +675,18 @@ int mtk_ddp_comp_init(struct device_node *node, struc= t mtk_ddp_comp *comp, if (!priv) return -ENOMEM; =20 - priv->regs =3D of_iomap(node, 0); + priv->regs =3D devm_of_iomap(dev, node, 0, NULL); + if (IS_ERR(priv->regs)) + return PTR_ERR(priv->regs); + priv->clk =3D of_clk_get(node, 0); if (IS_ERR(priv->clk)) return PTR_ERR(priv->clk); =20 + ret =3D devm_add_action_or_reset(dev, mtk_ddp_comp_clk_put, priv->clk); + if (ret) + return ret; + #if IS_REACHABLE(CONFIG_MTK_CMDQ) ret =3D cmdq_dev_get_client_reg(comp->dev, &priv->cmdq_reg, 0); if (ret) diff --git a/drivers/gpu/drm/mediatek/mtk_ddp_comp.h b/drivers/gpu/drm/medi= atek/mtk_ddp_comp.h index 7289b3dcf22f..3f3d43f4330d 100644 --- a/drivers/gpu/drm/mediatek/mtk_ddp_comp.h +++ b/drivers/gpu/drm/mediatek/mtk_ddp_comp.h @@ -350,7 +350,7 @@ static inline void mtk_ddp_comp_encoder_index_set(struc= t mtk_ddp_comp *comp) int mtk_ddp_comp_get_id(struct device_node *node, enum mtk_ddp_comp_type comp_type); int mtk_find_possible_crtcs(struct drm_device *drm, struct device *dev); -int mtk_ddp_comp_init(struct device_node *comp_node, struct mtk_ddp_comp *= comp, +int mtk_ddp_comp_init(struct device *dev, struct device_node *comp_node, s= truct mtk_ddp_comp *comp, unsigned int comp_id); enum mtk_ddp_comp_type mtk_ddp_comp_get_type(unsigned int comp_id); void mtk_ddp_write(struct cmdq_pkt *cmdq_pkt, unsigned int value, diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/media= tek/mtk_drm_drv.c index eb5537f0ac90..384b0510272c 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c @@ -1133,7 +1133,7 @@ static int mtk_drm_probe(struct platform_device *pdev) (void *)private->mmsys_dev, sizeof(*private->mmsys_dev)); private->ddp_comp[DDP_COMPONENT_DRM_OVL_ADAPTOR].dev =3D &ovl_adaptor->d= ev; - mtk_ddp_comp_init(NULL, &private->ddp_comp[DDP_COMPONENT_DRM_OVL_ADAPTOR= ], + mtk_ddp_comp_init(dev, NULL, &private->ddp_comp[DDP_COMPONENT_DRM_OVL_AD= APTOR], DDP_COMPONENT_DRM_OVL_ADAPTOR); component_match_add(dev, &match, compare_dev, &ovl_adaptor->dev); } @@ -1199,7 +1199,7 @@ static int mtk_drm_probe(struct platform_device *pdev) node); } =20 - ret =3D mtk_ddp_comp_init(node, &private->ddp_comp[comp_id], comp_id); + ret =3D mtk_ddp_comp_init(dev, node, &private->ddp_comp[comp_id], comp_i= d); if (ret) { of_node_put(node); goto err_node; --=20 2.49.1 From nobody Thu Oct 2 02:05:51 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3A6A925949A; Tue, 23 Sep 2025 15:26:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758641173; cv=none; b=BJRkYqsNCN++aAV5qTEH41t9ihanSU++8rjis2otRQVrukiRU9v62WchDhlNo5mUhYYTr/yq4mfxrRvrhRUO8bcNK4Cj76+IsUABvSk10MlkSwmiAs9FekU8mpTQh55lviVBl6LyoOfK72QkmUbg7V5h2ppz745nFsNLGUwuWk8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758641173; c=relaxed/simple; bh=600+gl2y/5DXDE8JzKJY5V6QLYLeY4g2SnvrcP9hV44=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kIajgdSGRBpqfTLDOK5/F2gDTLV8YH33JgO3pO2DSSk3yfDFK5I3bCAd+RY7D2pcALly8RjdxdK0BVZL6RE44g/qU3L1SpMTW6p74+5oTss2eepgo5/5QjPbCyaDaTKAUIJv8bjRf38B67aqT9hztUB/soRiUa16t1AmHKtouuE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=EUTeYdA5; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="EUTeYdA5" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B8D40C113D0; Tue, 23 Sep 2025 15:26:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758641172; bh=600+gl2y/5DXDE8JzKJY5V6QLYLeY4g2SnvrcP9hV44=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EUTeYdA5pQktnE96dmZRLl7V/ujUZJQApclxLmczzcUy0dOOVY1AQUPIhKrP4a4W6 E0wDpFyjZjf0N4zCEjTTJF8oeH8vvlgfGpoet8ohApUcbg/YKUI/CtcHNaOZhkPxxr 65AYe+vUh/tfzo2kgh2b0YwzqXLrLtDyAQrVTm+xjio27qXRcuy82p0eyrfsBX0Cgq hAy4L6BlL9j+3vvOszbzOIvnWNqsZ4Cbn+xMa9nglrtaIV/b8XYtDpnhC2kPjwolQs MNeC5vhqdPPNX2sIbHnAVjzYottYaeeuF24Yu4Jx6m6PlDhg53GljSEBIbzz/Dpzzb 4Q+0d0WHkoJJg== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1v14u6-000000004mq-46Hf; Tue, 23 Sep 2025 17:26:07 +0200 From: Johan Hovold To: Chun-Kuang Hu , Philipp Zabel Cc: David Airlie , Simona Vetter , Matthias Brugger , AngeloGioacchino Del Regno , dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org, CK Hu Subject: [PATCH 2/5] drm/mediatek: fix probe memory leak Date: Tue, 23 Sep 2025 17:23:37 +0200 Message-ID: <20250923152340.18234-3-johan@kernel.org> X-Mailer: git-send-email 2.49.1 In-Reply-To: <20250923152340.18234-1-johan@kernel.org> References: <20250923152340.18234-1-johan@kernel.org> 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" The Mediatek DRM driver allocates private data for components without a platform driver but as the lifetime is tied to each component device, the memory is never freed. Tie the allocation lifetime to the DRM platform device so that the memory is released on probe failure (e.g. probe deferral) and when the driver is unbound. Fixes: c0d36de868a6 ("drm/mediatek: Move clk info from struct mtk_ddp_comp = to sub driver private data") Cc: stable@vger.kernel.org # 5.12 Cc: CK Hu Signed-off-by: Johan Hovold Reviewed-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/mediatek/mtk_ddp_comp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/mediatek/mtk_ddp_comp.c b/drivers/gpu/drm/medi= atek/mtk_ddp_comp.c index 0264017806ad..31d67a131c50 100644 --- a/drivers/gpu/drm/mediatek/mtk_ddp_comp.c +++ b/drivers/gpu/drm/mediatek/mtk_ddp_comp.c @@ -671,7 +671,7 @@ int mtk_ddp_comp_init(struct device *dev, struct device= _node *node, struct mtk_d type =3D=3D MTK_DSI) return 0; =20 - priv =3D devm_kzalloc(comp->dev, sizeof(*priv), GFP_KERNEL); + priv =3D devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); if (!priv) return -ENOMEM; =20 --=20 2.49.1 From nobody Thu Oct 2 02:05:51 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6875326563B; Tue, 23 Sep 2025 15:26:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758641173; cv=none; b=kZxxpnE+/NbXpg26ewOpuINoMKU7MvCZtX7Z4VLsjtcHAZyXoTym44hu4jNoQlAK8chFBYGcWCptSo8qM66l2iBWinZ2EHXHH+Go/mM20mq3YMqAElcsI9uWvT8BKwYxGX0yiz8bx9BBTPJzeRAZG3OfE1fJkg5mk1Mx7H+Emag= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758641173; c=relaxed/simple; bh=CX4657yA0nVtCwJ99HeYU2TEyd1VwUMZkfyJlumA3Fw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aI2Qr2L2rLdL20wwLkYCHZJS9gOCXNOZC77oNIogLKwhQeadOGcUEhImZofJeqCL7nQJLxgp1axvpmOtMnUDek3h6z8yVjUDfJ+Uy8oGIcH1KDF8LRvnlCj8n8gY6bVw8DiRHo5OmfByL9mzOBlfELotmkpprBGamsFWr/mXmxI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=V6yt8Dd0; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="V6yt8Dd0" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CCEFFC19421; Tue, 23 Sep 2025 15:26:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758641172; bh=CX4657yA0nVtCwJ99HeYU2TEyd1VwUMZkfyJlumA3Fw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=V6yt8Dd01hQYW7tFm79LRMPeF/k8WJfQrQ6DVn9XeoMSORQUvMUWKMVYjfp+9NK3P aIO8luiitVPFhEwFFLo+5I9JRBV7pDAvnqQ+8G4YENa2T3LPaejd+WeQud+A7mphpn NVRjF/8MxbKvINvHJ94CuPM6d2liKLZp2SXm4L7/1tfmBTU1alO/fRO4l1JjB4CP6Y PNBq7/dDQVlugxp5DnejPAzsIL3h51y+ZSA9pC7pDcgJ68UOCQkLNRDWa51hiSgC6U AnGaaSkoRnrRFVo9etYvwoG6s9EGY3m9HVfCEbEBMt4ugU6z9+ji528EC/N9HsB6BM M2/2IchSh+InA== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1v14u7-000000004ms-0HWq; Tue, 23 Sep 2025 17:26:07 +0200 From: Johan Hovold To: Chun-Kuang Hu , Philipp Zabel Cc: David Airlie , Simona Vetter , Matthias Brugger , AngeloGioacchino Del Regno , dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org Subject: [PATCH 3/5] drm/mediatek: fix probe device leaks Date: Tue, 23 Sep 2025 17:23:38 +0200 Message-ID: <20250923152340.18234-4-johan@kernel.org> X-Mailer: git-send-email 2.49.1 In-Reply-To: <20250923152340.18234-1-johan@kernel.org> References: <20250923152340.18234-1-johan@kernel.org> 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" Make sure to drop the reference taken to each component device during probe on probe failure (e.g. probe deferral) and on driver unbind. Fixes: 6ea6f8276725 ("drm/mediatek: Use correct device pointer to get CMDQ = client register") Cc: stable@vger.kernel.org # 5.12 Cc: Chun-Kuang Hu Signed-off-by: Johan Hovold Reviewed-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/mediatek/mtk_ddp_comp.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/gpu/drm/mediatek/mtk_ddp_comp.c b/drivers/gpu/drm/medi= atek/mtk_ddp_comp.c index 31d67a131c50..9672ea1f91a2 100644 --- a/drivers/gpu/drm/mediatek/mtk_ddp_comp.c +++ b/drivers/gpu/drm/mediatek/mtk_ddp_comp.c @@ -621,6 +621,13 @@ int mtk_find_possible_crtcs(struct drm_device *drm, st= ruct device *dev) return ret; } =20 +static void mtk_ddp_comp_put_device(void *_dev) +{ + struct device *dev =3D _dev; + + put_device(dev); +} + static void mtk_ddp_comp_clk_put(void *_clk) { struct clk *clk =3D _clk; @@ -656,6 +663,10 @@ int mtk_ddp_comp_init(struct device *dev, struct devic= e_node *node, struct mtk_d } comp->dev =3D &comp_pdev->dev; =20 + ret =3D devm_add_action_or_reset(dev, mtk_ddp_comp_put_device, comp->dev); + if (ret) + return ret; + if (type =3D=3D MTK_DISP_AAL || type =3D=3D MTK_DISP_BLS || type =3D=3D MTK_DISP_CCORR || --=20 2.49.1 From nobody Thu Oct 2 02:05:51 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 68824265CB2; Tue, 23 Sep 2025 15:26:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758641173; cv=none; b=opDzvmlcWpw6SvCs/QUP2ArbTjnDAgeOxheWBikd0MSQTyiwG0ELY58w/9+Zd2NATxHBPzeo3O7HW2ea5ljTtUO9/GZW7ujbClt6S9WMUyur2ORUrvFD/sitLMvM2+MkKDUKrj8AKZMNCKmMdZENZy+GV8Xn6mu2uPf3meQAfX8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758641173; c=relaxed/simple; bh=30zvSnUQBdVP9nzTp9cWqSwZXrzYK9ux1hOlnELHiMU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BBLKxysYotqDBXIkpjGmRNJCIPFgSKLvGDiBIQtmu8DXihdHHiQWFwY5JwH3wYShqC20SW24QCeZeUPRrLxtVG5PtJ7JgMo7gCRjtGBEOCsWv114K4aoVNKRa4OvXO7nRLjN134aYWu+ktxPIy/xedlm51avT5psAKcxFDeSaY0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=I7K7+f+R; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="I7K7+f+R" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 195F4C4CEF5; Tue, 23 Sep 2025 15:26:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758641173; bh=30zvSnUQBdVP9nzTp9cWqSwZXrzYK9ux1hOlnELHiMU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=I7K7+f+Rbm1S4nTXRHRqvh91O7U0m8/B6AUA+ntX4CdJJSk5ObmzTNWPnH6KZCOw4 UzbXvOlLO2uPG6LQtVr/w1RvH/W68P0jmfEFCjjo9cO9zhRC0xFAF+sKhbUSJXEsA2 LEgxPxLXpFmRZ8lyOvBOHLkrh5hN3zsSCR1YSz63lPQooVmakiahMDH1NWWoSmXL41 H8xEAZHP5ex9Ga9uVil+WgByS+giNxIllok+J7B5I14gJ0tr6mJn/he44FMoRWC+RU szrEWjCUnwhBCNLJgwXUSHlPiUZ4EtLNyjs2bqXjTkhFm8RJh6ZG7sXu4y8BfPiqqn 67i83Z4IhQvBQ== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1v14u7-000000004mv-0ek6; Tue, 23 Sep 2025 17:26:07 +0200 From: Johan Hovold To: Chun-Kuang Hu , Philipp Zabel Cc: David Airlie , Simona Vetter , Matthias Brugger , AngeloGioacchino Del Regno , dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org, Jie Qiu Subject: [PATCH 4/5] drm/mediatek: mtk_hdmi: fix probe device leaks Date: Tue, 23 Sep 2025 17:23:39 +0200 Message-ID: <20250923152340.18234-5-johan@kernel.org> X-Mailer: git-send-email 2.49.1 In-Reply-To: <20250923152340.18234-1-johan@kernel.org> References: <20250923152340.18234-1-johan@kernel.org> 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" Make sure to drop the references to the DDC adapter and CEC device taken during probe on probe failure (e.g. probe deferral) and on driver unbind. Fixes: 8f83f26891e1 ("drm/mediatek: Add HDMI support") Cc: stable@vger.kernel.org # 4.8 Cc: Jie Qiu Signed-off-by: Johan Hovold Reviewed-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/mediatek/mtk_hdmi.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek= /mtk_hdmi.c index b766dd5e6c8d..306e2c907311 100644 --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c @@ -1345,6 +1345,13 @@ static const struct drm_bridge_funcs mtk_hdmi_bridge= _funcs =3D { .edid_read =3D mtk_hdmi_bridge_edid_read, }; =20 +static void mtk_hdmi_put_device(void *_dev) +{ + struct device *dev =3D _dev; + + put_device(dev); +} + static int mtk_hdmi_get_cec_dev(struct mtk_hdmi *hdmi, struct device *dev,= struct device_node *np) { struct platform_device *cec_pdev; @@ -1369,6 +1376,10 @@ static int mtk_hdmi_get_cec_dev(struct mtk_hdmi *hdm= i, struct device *dev, struc } of_node_put(cec_np); =20 + ret =3D devm_add_action_or_reset(dev, mtk_hdmi_put_device, &cec_pdev->dev= ); + if (ret) + return ret; + /* * The mediatek,syscon-hdmi property contains a phandle link to the * MMSYS_CONFIG device and the register offset of the HDMI_SYS_CFG @@ -1423,6 +1434,10 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *= hdmi, if (!hdmi->ddc_adpt) return dev_err_probe(dev, -EINVAL, "Failed to get ddc i2c adapter by nod= e\n"); =20 + ret =3D devm_add_action_or_reset(dev, mtk_hdmi_put_device, &hdmi->ddc_adp= t->dev); + if (ret) + return ret; + ret =3D mtk_hdmi_get_cec_dev(hdmi, dev, np); if (ret) return ret; --=20 2.49.1 From nobody Thu Oct 2 02:05:51 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1C423257AC6; Tue, 23 Sep 2025 15:26:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758641173; cv=none; b=YxZIAy4pw+XST18lPWuqJuqlYQWcrj9ZYSat3xZMp1B4mmqNZesBdS2NXoJdHzjQy9mJpsMYakybKXuQSTYtZvkM0/XBNVNxdUaBHRCc24nQsEN1do6L0QNRIGi13ayJ1u2SwbETNfYh3091l6acXEkRoeJxE29CrLy4+Dw5ZYU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758641173; c=relaxed/simple; bh=c0az61wbtOZUqLNGV0rJC8DczNsHSPgRUfjfrHYMoFI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KzaJVCbomIEGFGHKQiOSrjgODRvBifmm6UooFuIl9GBdJ8PurAhFDoNruAlmlQ67EA6Y3TF23OLTuB1w/SrqTL6pku2vropAlkStHZdPGgxvUeIPjNIqF3nzx/UboJrI8t0iSyV/BgIVxtxWltpYJKvj58bQPQTEAeDq1TAL2sk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Vpt8l3/l; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Vpt8l3/l" Received: by smtp.kernel.org (Postfix) with ESMTPSA id ED311C19424; Tue, 23 Sep 2025 15:26:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758641173; bh=c0az61wbtOZUqLNGV0rJC8DczNsHSPgRUfjfrHYMoFI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Vpt8l3/lzn7Ssa2Vt1YoSEs93/7jzHiV360V7dvgkCxApbJjTW2GOqMdkr1EvTVIs 9xD3YVVCF7FDl7hjP9EqhjPFNIXWXndoKHp65Y81ZklzZN0to7BHHENOXKnOgcyGrm UpJ7Dtgulcsj+ikFf1VNQEFgBqhIZaC21i2atkyT/TwGouHp+3dmyhExhEeyjOs4Gv 9FnRPmicXvu7OIzCcIfU+oo/I847RqUe23Ux5QvyCdJQfBUN3Ur9voYhUItzx/qF3n WsGQqHH4RUkdl9Ot9PC9GqtGJGTlLUCZ9mbT52G8g57gvX/SkZ4YU7oPq5fduJOVi+ a3cKWgfhG/jGg== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1v14u7-000000004my-12OL; Tue, 23 Sep 2025 17:26:07 +0200 From: Johan Hovold To: Chun-Kuang Hu , Philipp Zabel Cc: David Airlie , Simona Vetter , Matthias Brugger , AngeloGioacchino Del Regno , dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org, "Nancy.Lin" Subject: [PATCH 5/5] drm/mediatek: ovl_adaptor: fix probe device leaks Date: Tue, 23 Sep 2025 17:23:40 +0200 Message-ID: <20250923152340.18234-6-johan@kernel.org> X-Mailer: git-send-email 2.49.1 In-Reply-To: <20250923152340.18234-1-johan@kernel.org> References: <20250923152340.18234-1-johan@kernel.org> 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" Make sure to drop the references taken to the component devices by of_find_device_by_node() during probe on probe failure (e.g. probe deferral) and on driver unbind. Fixes: 453c3364632a ("drm/mediatek: Add ovl_adaptor support for MT8195") Cc: stable@vger.kernel.org # 6.4 Cc: Nancy.Lin Signed-off-by: Johan Hovold Reviewed-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/mediatek/mtk_disp_ovl_adaptor.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/gpu/drm/mediatek/mtk_disp_ovl_adaptor.c b/drivers/gpu/= drm/mediatek/mtk_disp_ovl_adaptor.c index fe97bb97e004..c0af3e3b51d5 100644 --- a/drivers/gpu/drm/mediatek/mtk_disp_ovl_adaptor.c +++ b/drivers/gpu/drm/mediatek/mtk_disp_ovl_adaptor.c @@ -527,6 +527,13 @@ bool mtk_ovl_adaptor_is_comp_present(struct device_nod= e *node) type =3D=3D OVL_ADAPTOR_TYPE_PADDING; } =20 +static void ovl_adaptor_put_device(void *_dev) +{ + struct device *dev =3D _dev; + + put_device(dev); +} + static int ovl_adaptor_comp_init(struct device *dev, struct component_matc= h **match) { struct mtk_disp_ovl_adaptor *priv =3D dev_get_drvdata(dev); @@ -560,6 +567,11 @@ static int ovl_adaptor_comp_init(struct device *dev, s= truct component_match **ma if (!comp_pdev) return -EPROBE_DEFER; =20 + ret =3D devm_add_action_or_reset(dev, ovl_adaptor_put_device, + &comp_pdev->dev); + if (ret) + return ret; + priv->ovl_adaptor_comp[id] =3D &comp_pdev->dev; =20 drm_of_component_match_add(dev, match, component_compare_of, node); --=20 2.49.1