From: Gustavo Padovan <gustavo.pado...@collabora.co.uk>

DP was leaked everytime function returns EPROBE_DEFER, free it before
returning.

Signed-off-by: Gustavo Padovan <gustavo.pado...@collabora.co.uk>
---
 drivers/gpu/drm/exynos/exynos_dp_core.c | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_dp_core.c 
b/drivers/gpu/drm/exynos/exynos_dp_core.c
index 85762cf..6fd4a46 100644
--- a/drivers/gpu/drm/exynos/exynos_dp_core.c
+++ b/drivers/gpu/drm/exynos/exynos_dp_core.c
@@ -1336,8 +1336,10 @@ static int exynos_dp_probe(struct platform_device *pdev)
        if (panel_node) {
                dp->panel = of_drm_find_panel(panel_node);
                of_node_put(panel_node);
-               if (!dp->panel)
-                       return -EPROBE_DEFER;
+               if (!dp->panel) {
+                       ret = -EPROBE_DEFER;
+                       goto free_dp;
+               }
        }
 
        endpoint = of_graph_get_next_endpoint(dev->of_node, NULL);
@@ -1346,10 +1348,14 @@ static int exynos_dp_probe(struct platform_device *pdev)
                if (bridge_node) {
                        dp->bridge = of_drm_find_bridge(bridge_node);
                        of_node_put(bridge_node);
-                       if (!dp->bridge)
-                               return -EPROBE_DEFER;
-               } else
-                       return -EPROBE_DEFER;
+                       if (!dp->bridge) {
+                               ret = -EPROBE_DEFER;
+                               goto free_dp;
+                       }
+               } else {
+                       ret = -EPROBE_DEFER;
+                       goto free_dp;
+               }
        }
 
        exynos_dp_display.ctx = dp;
@@ -1359,6 +1365,9 @@ static int exynos_dp_probe(struct platform_device *pdev)
                exynos_drm_component_del(&pdev->dev,
                                                EXYNOS_DEVICE_TYPE_CONNECTOR);
 
+free_dp:
+       devm_kfree(dev, dp);
+
        return ret;
 }
 
-- 
1.9.3

--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to