The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH 0/2] drm/panel: use devm_drm_panel_add() in more drivers
@ 2026-05-24 16:36 Myeonghun Pak
  2026-05-24 16:36 ` [PATCH 1/2] drm/panel: boe-bf060y8m-aj0: use devm_drm_panel_add() Myeonghun Pak
  2026-05-24 16:36 ` [PATCH 2/2] drm/panel: novatek-nt36523: " Myeonghun Pak
  0 siblings, 2 replies; 4+ messages in thread
From: Myeonghun Pak @ 2026-05-24 16:36 UTC (permalink / raw)
  To: Neil Armstrong
  Cc: Jianhua Lu, Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, dri-devel,
	linux-kernel, Myeonghun Pak

Convert two panel drivers to devm_drm_panel_add() so panel registration
is cleaned up by devres on later probe failures.

Both drivers currently call drm_panel_add() before attaching one or more
DSI devices. If an attach fails, probe returns with the panel still in
the global panel registry. drm-misc-next has devm_drm_panel_add(), which
wraps drm_panel_add() with devres-managed drm_panel_remove() cleanup.

Patch 1 updates boe-bf060y8m-aj0.
Patch 2 updates novatek-nt36523.

Myeonghun Pak (2):
  drm/panel: boe-bf060y8m-aj0: use devm_drm_panel_add()
  drm/panel: novatek-nt36523: use devm_drm_panel_add()

 drivers/gpu/drm/panel/panel-boe-bf060y8m-aj0.c |  6 +++---
 drivers/gpu/drm/panel/panel-novatek-nt36523.c  | 12 +++---------
 2 files changed, 6 insertions(+), 12 deletions(-)

-- 
2.47.1

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] drm/panel: boe-bf060y8m-aj0: use devm_drm_panel_add()
  2026-05-24 16:36 [PATCH 0/2] drm/panel: use devm_drm_panel_add() in more drivers Myeonghun Pak
@ 2026-05-24 16:36 ` Myeonghun Pak
  2026-05-24 16:36 ` [PATCH 2/2] drm/panel: novatek-nt36523: " Myeonghun Pak
  1 sibling, 0 replies; 4+ messages in thread
From: Myeonghun Pak @ 2026-05-24 16:36 UTC (permalink / raw)
  To: Neil Armstrong
  Cc: Jianhua Lu, Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, dri-devel,
	linux-kernel, Myeonghun Pak, stable, Ijae Kim

boe_bf060y8m_aj0_probe() adds the panel before attaching the DSI
device. If mipi_dsi_attach() fails, probe returns with the panel still
registered.

drm-misc-next has devm_drm_panel_add(), so use it to register the panel
with devres-managed cleanup. This removes the need for open-coded
drm_panel_remove() handling on later probe failures and on the remove
path.

This issue was identified during our ongoing static-analysis research while
reviewing kernel code.

Fixes: a19125a28112 ("drm/panel: Add BOE BF060Y8M-AJ0 5.99" AMOLED panel driver")
Cc: stable@vger.kernel.org
Co-developed-by: Ijae Kim <ae878000@gmail.com>
Signed-off-by: Ijae Kim <ae878000@gmail.com>
Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
---
 drivers/gpu/drm/panel/panel-boe-bf060y8m-aj0.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/panel/panel-boe-bf060y8m-aj0.c b/drivers/gpu/drm/panel/panel-boe-bf060y8m-aj0.c
index 84c21c62a4..a6d765b402 100644
--- a/drivers/gpu/drm/panel/panel-boe-bf060y8m-aj0.c
+++ b/drivers/gpu/drm/panel/panel-boe-bf060y8m-aj0.c
@@ -357,7 +357,9 @@ static int boe_bf060y8m_aj0_probe(struct mipi_dsi_device *dsi)
 		return dev_err_probe(dev, PTR_ERR(boe->panel.backlight),
 				     "Failed to create backlight\n");
 
-	drm_panel_add(&boe->panel);
+	ret = devm_drm_panel_add(dev, &boe->panel);
+	if (ret)
+		return ret;
 
 	ret = mipi_dsi_attach(dsi);
 	if (ret < 0) {
@@ -376,8 +378,6 @@ static void boe_bf060y8m_aj0_remove(struct mipi_dsi_device *dsi)
 	ret = mipi_dsi_detach(dsi);
 	if (ret < 0)
 		dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret);
-
-	drm_panel_remove(&boe->panel);
 }
 
 static const struct of_device_id boe_bf060y8m_aj0_of_match[] = {
-- 
2.47.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] drm/panel: novatek-nt36523: use devm_drm_panel_add()
  2026-05-24 16:36 [PATCH 0/2] drm/panel: use devm_drm_panel_add() in more drivers Myeonghun Pak
  2026-05-24 16:36 ` [PATCH 1/2] drm/panel: boe-bf060y8m-aj0: use devm_drm_panel_add() Myeonghun Pak
@ 2026-05-24 16:36 ` Myeonghun Pak
  2026-05-25 10:14   ` Christophe JAILLET
  1 sibling, 1 reply; 4+ messages in thread
From: Myeonghun Pak @ 2026-05-24 16:36 UTC (permalink / raw)
  To: Neil Armstrong
  Cc: Jianhua Lu, Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, dri-devel,
	linux-kernel, Myeonghun Pak, stable, Ijae Kim

nt36523_probe() adds the DRM panel before attaching the DSI devices. If
one of the devm_mipi_dsi_attach() calls fails, probe returns with the
panel still registered.

This issue was identified during our ongoing static-analysis research while
reviewing kernel code.

Fixes: 0993234a0045 ("drm/panel: Add driver for Novatek NT36523")
Cc: stable@vger.kernel.org
Co-developed-by: Ijae Kim <ae878000@gmail.com>
Signed-off-by: Ijae Kim <ae878000@gmail.com>
Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
---
 drivers/gpu/drm/panel/panel-novatek-nt36523.c | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/panel/panel-novatek-nt36523.c b/drivers/gpu/drm/panel/panel-novatek-nt36523.c
index 226d91daf8..f6592b01df 100644
--- a/drivers/gpu/drm/panel/panel-novatek-nt36523.c
+++ b/drivers/gpu/drm/panel/panel-novatek-nt36523.c
@@ -1047,13 +1047,6 @@ static int nt36523_unprepare(struct drm_panel *panel)
 	return 0;
 }
 
-static void nt36523_remove(struct mipi_dsi_device *dsi)
-{
-	struct panel_info *pinfo = mipi_dsi_get_drvdata(dsi);
-
-	drm_panel_remove(&pinfo->panel);
-}
-
 static int nt36523_get_modes(struct drm_panel *panel,
 			       struct drm_connector *connector)
 {
@@ -1225,7 +1218,9 @@ static int nt36523_probe(struct mipi_dsi_device *dsi)
 			return dev_err_probe(dev, ret, "Failed to get backlight\n");
 	}
 
-	drm_panel_add(&pinfo->panel);
+	ret = devm_drm_panel_add(dev, &pinfo->panel);
+	if (ret)
+		return ret;
 
 	for (i = 0; i < DSI_NUM_MIN + pinfo->desc->is_dual_dsi; i++) {
 		pinfo->dsi[i]->lanes = pinfo->desc->lanes;
@@ -1259,7 +1254,6 @@ MODULE_DEVICE_TABLE(of, nt36523_of_match);
 
 static struct mipi_dsi_driver nt36523_driver = {
 	.probe = nt36523_probe,
-	.remove = nt36523_remove,
 	.driver = {
 		.name = "panel-novatek-nt36523",
 		.of_match_table = nt36523_of_match,
-- 
2.47.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] drm/panel: novatek-nt36523: use devm_drm_panel_add()
  2026-05-24 16:36 ` [PATCH 2/2] drm/panel: novatek-nt36523: " Myeonghun Pak
@ 2026-05-25 10:14   ` Christophe JAILLET
  0 siblings, 0 replies; 4+ messages in thread
From: Christophe JAILLET @ 2026-05-25 10:14 UTC (permalink / raw)
  To: Myeonghun Pak, Neil Armstrong
  Cc: Jianhua Lu, Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, dri-devel,
	linux-kernel, stable, Ijae Kim

Le 24/05/2026 à 18:36, Myeonghun Pak a écrit :
> nt36523_probe() adds the DRM panel before attaching the DSI devices. If
> one of the devm_mipi_dsi_attach() calls fails, probe returns with the
> panel still registered.
> 
> This issue was identified during our ongoing static-analysis research while
> reviewing kernel code.
> 
> Fixes: 0993234a0045 ("drm/panel: Add driver for Novatek NT36523")
> Cc: stable@vger.kernel.org
> Co-developed-by: Ijae Kim <ae878000@gmail.com>
> Signed-off-by: Ijae Kim <ae878000@gmail.com>
> Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
> ---
>   drivers/gpu/drm/panel/panel-novatek-nt36523.c | 12 +++---------
>   1 file changed, 3 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/panel/panel-novatek-nt36523.c b/drivers/gpu/drm/panel/panel-novatek-nt36523.c
> index 226d91daf8..f6592b01df 100644
> --- a/drivers/gpu/drm/panel/panel-novatek-nt36523.c
> +++ b/drivers/gpu/drm/panel/panel-novatek-nt36523.c
> @@ -1047,13 +1047,6 @@ static int nt36523_unprepare(struct drm_panel *panel)
>   	return 0;
>   }
>   
> -static void nt36523_remove(struct mipi_dsi_device *dsi)
> -{
> -	struct panel_info *pinfo = mipi_dsi_get_drvdata(dsi);

Hi,

Not looked in details, but the:
	mipi_dsi_set_drvdata(dsi, pinfo);
in the probe now looks useless.

CJ

> -
> -	drm_panel_remove(&pinfo->panel);
> -}
> -
>   static int nt36523_get_modes(struct drm_panel *panel,
>   			       struct drm_connector *connector)
>   {
> @@ -1225,7 +1218,9 @@ static int nt36523_probe(struct mipi_dsi_device *dsi)
>   			return dev_err_probe(dev, ret, "Failed to get backlight\n");
>   	}
>   
> -	drm_panel_add(&pinfo->panel);
> +	ret = devm_drm_panel_add(dev, &pinfo->panel);
> +	if (ret)
> +		return ret;
>   
>   	for (i = 0; i < DSI_NUM_MIN + pinfo->desc->is_dual_dsi; i++) {
>   		pinfo->dsi[i]->lanes = pinfo->desc->lanes;
> @@ -1259,7 +1254,6 @@ MODULE_DEVICE_TABLE(of, nt36523_of_match);
>   
>   static struct mipi_dsi_driver nt36523_driver = {
>   	.probe = nt36523_probe,
> -	.remove = nt36523_remove,
>   	.driver = {
>   		.name = "panel-novatek-nt36523",
>   		.of_match_table = nt36523_of_match,


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-05-25 10:14 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-24 16:36 [PATCH 0/2] drm/panel: use devm_drm_panel_add() in more drivers Myeonghun Pak
2026-05-24 16:36 ` [PATCH 1/2] drm/panel: boe-bf060y8m-aj0: use devm_drm_panel_add() Myeonghun Pak
2026-05-24 16:36 ` [PATCH 2/2] drm/panel: novatek-nt36523: " Myeonghun Pak
2026-05-25 10:14   ` Christophe JAILLET

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox