The main loop in imx8qxp_pixel_link_find_next_bridge() requires calling
of_node_put() in multiple places, complicating code flow. Simplify it by
using a cleanup action and making the 'remote' variable scope local to the
loop.

Signed-off-by: Luca Ceresoli <[email protected]>

---

Cc: Liu Ying <[email protected]>
---
 drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c 
b/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c
index 53016f0d53a0..2ecc3c1051e5 100644
--- a/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c
+++ b/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c
@@ -260,7 +260,7 @@ static struct drm_bridge *
 imx8qxp_pixel_link_find_next_bridge(struct imx8qxp_pixel_link *pl)
 {
        struct device_node *np = pl->dev->of_node;
-       struct device_node *port, *remote;
+       struct device_node *port;
        struct drm_bridge *selected_bridge = NULL;
        u32 port_id;
        bool found_port = false;
@@ -286,7 +286,8 @@ imx8qxp_pixel_link_find_next_bridge(struct 
imx8qxp_pixel_link *pl)
        }
 
        for (reg = 0; reg < PL_MAX_NEXT_BRIDGES; reg++) {
-               remote = of_graph_get_remote_node(np, port_id, reg);
+               struct device_node *remote __free(device_node) =
+                       of_graph_get_remote_node(np, port_id, reg);
                if (!remote)
                        continue;
 
@@ -294,15 +295,12 @@ imx8qxp_pixel_link_find_next_bridge(struct 
imx8qxp_pixel_link *pl)
                        DRM_DEV_DEBUG(pl->dev,
                                      "port%u endpoint%u remote parent is not 
available\n",
                                      port_id, reg);
-                       of_node_put(remote);
                        continue;
                }
 
                struct drm_bridge *next_bridge = of_drm_find_bridge(remote);
-               if (!next_bridge) {
-                       of_node_put(remote);
+               if (!next_bridge)
                        return ERR_PTR(-EPROBE_DEFER);
-               }
 
                /*
                 * Select the next bridge with companion PXL2DPI if
@@ -310,8 +308,6 @@ imx8qxp_pixel_link_find_next_bridge(struct 
imx8qxp_pixel_link *pl)
                 */
                if (!selected_bridge || of_property_present(remote, 
"fsl,companion-pxl2dpi"))
                        selected_bridge = next_bridge;
-
-               of_node_put(remote);
        }
 
        pl->mst_addr = port_id - 1;

-- 
2.51.1

Reply via email to