[PATCH] drm/exynos: dpi: fix panel node reference leak
Wentao Liang
vulab at iscas.ac.cn
Tue Nov 3 18:40:57 PST 2026
exynos_dpi_parse_dt() stores a reference to the remote panel node
obtained with of_graph_get_remote_node(). Nothing ever drops it:
exynos_dpi_probe() only needs it to look the panel up with
of_drm_find_panel(), and the two parse error paths return without
releasing it either.
Release the reference once the panel has been looked up, and on the
error paths before returning.
Fixes: 86418f90a4c1 ("drm: convert drivers to use of_graph_get_remote_node")
Cc: stable at vger.kernel.org
Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex
Signed-off-by: Wentao Liang <vulab at iscas.ac.cn>
---
drivers/gpu/drm/exynos/exynos_drm_dpi.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dpi.c b/drivers/gpu/drm/exynos/exynos_drm_dpi.c
index 74d3a2bebb74..b9417529b38e 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dpi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dpi.c
@@ -174,12 +174,15 @@ static int exynos_dpi_parse_dt(struct exynos_dpi *ctx)
of_node_put(np);
vm = devm_kzalloc(dev, sizeof(*ctx->vm), GFP_KERNEL);
- if (!vm)
+ if (!vm) {
+ of_node_put(ctx->panel_node);
return -ENOMEM;
+ }
ret = of_get_videomode(dn, vm, 0);
if (ret < 0) {
devm_kfree(dev, vm);
+ of_node_put(ctx->panel_node);
return ret;
}
@@ -241,6 +244,8 @@ struct drm_encoder *exynos_dpi_probe(struct device *dev)
if (ctx->panel_node) {
ctx->panel = of_drm_find_panel(ctx->panel_node);
+ of_node_put(ctx->panel_node);
+ ctx->panel_node = NULL;
if (IS_ERR(ctx->panel))
return ERR_CAST(ctx->panel);
}
--
2.34.1
More information about the linux-arm-kernel
mailing list