The function mtk_dp_dt_parse() calls of_graph_get_endpoint_by_regs()
to get the endpoint device node, but fails to call of_node_put() to release
the reference when the function returns. This results in a device node
reference leak.

Fix this by adding the missing of_node_put() call before returning from
the function.

Found via static analysis and code review.

Fixes: f70ac097a2cf ("drm/mediatek: Add MT8195 Embedded DisplayPort driver")
Cc: [email protected]
Signed-off-by: Miaoqian Lin <[email protected]>
---
 drivers/gpu/drm/mediatek/mtk_dp.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_dp.c 
b/drivers/gpu/drm/mediatek/mtk_dp.c
index bef6eeb30d3e..b0b1e158600f 100644
--- a/drivers/gpu/drm/mediatek/mtk_dp.c
+++ b/drivers/gpu/drm/mediatek/mtk_dp.c
@@ -2087,6 +2087,7 @@ static int mtk_dp_dt_parse(struct mtk_dp *mtk_dp,
        endpoint = of_graph_get_endpoint_by_regs(pdev->dev.of_node, 1, -1);
        len = of_property_count_elems_of_size(endpoint,
                                              "data-lanes", sizeof(u32));
+       of_node_put(endpoint);
        if (len < 0 || len > 4 || len == 3) {
                dev_err(dev, "invalid data lane size: %d\n", len);
                return -EINVAL;
-- 
2.39.5 (Apple Git-154)

Reply via email to