Should component_add() fail, we should call analogix_dp_remove() in the
error handling path, as already done in the remove function.

Fixes: 152cce0006ab ("drm/bridge: analogix_dp: Split bind() into probe() and 
real bind()")
Signed-off-by: Christophe JAILLET <christophe.jail...@wanadoo.fr>
---
 drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c 
b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
index 70be64ca0a00..ad2d3ae7e621 100644
--- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
+++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
@@ -408,7 +408,15 @@ static int rockchip_dp_probe(struct platform_device *pdev)
        if (IS_ERR(dp->adp))
                return PTR_ERR(dp->adp);
 
-       return component_add(dev, &rockchip_dp_component_ops);
+       ret = component_add(dev, &rockchip_dp_component_ops);
+       if (ret)
+               goto err_dp_remove;
+
+       return 0;
+
+err_dp_remove:
+       analogix_dp_remove(dp->adp);
+       return ret;
 }
 
 static int rockchip_dp_remove(struct platform_device *pdev)
-- 
2.34.1

Reply via email to