Putting the remote device_node reference requires a of_node_put(ep) in both
error return points. Use a cleanup action to simplify the code.

Signed-off-by: Luca Ceresoli <[email protected]>
---
 drivers/gpu/drm/mxsfb/lcdif_drv.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/mxsfb/lcdif_drv.c 
b/drivers/gpu/drm/mxsfb/lcdif_drv.c
index 47da1d9336b9..756ca96373c8 100644
--- a/drivers/gpu/drm/mxsfb/lcdif_drv.c
+++ b/drivers/gpu/drm/mxsfb/lcdif_drv.c
@@ -53,16 +53,13 @@ static int lcdif_attach_bridge(struct lcdif_drm_private 
*lcdif)
        int ret;
 
        for_each_endpoint_of_node(dev->of_node, ep) {
-               struct device_node *remote;
+               struct device_node *remote __free(drm_bridge_put) =
+                       of_graph_get_remote_port_parent(ep);
                struct of_endpoint of_ep;
                struct drm_encoder *encoder;
 
-               remote = of_graph_get_remote_port_parent(ep);
-               if (!of_device_is_available(remote)) {
-                       of_node_put(remote);
+               if (!of_device_is_available(remote))
                        continue;
-               }
-               of_node_put(remote);
 
                ret = of_graph_parse_endpoint(ep, &of_ep);
                if (ret < 0) {

-- 
2.53.0

Reply via email to