Putting the remote device_node reference requires a of_node_put(remote) in two places. Use a cleanup action to simplify the code.
Reviewed-by: Liu Ying <[email protected]> Tested-by: Martyn Welch <[email protected]> Tested-by: Alexander Stein <[email protected]> # TQMa8MPxL/MBa8MPxL Signed-off-by: Luca Ceresoli <[email protected]> --- Changes in v2: - Use the correct cleanup action - Fix commit message - add missing cleanup.h include --- drivers/gpu/drm/mxsfb/lcdif_drv.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/mxsfb/lcdif_drv.c b/drivers/gpu/drm/mxsfb/lcdif_drv.c index 47da1d9336b9..7719629487da 100644 --- a/drivers/gpu/drm/mxsfb/lcdif_drv.c +++ b/drivers/gpu/drm/mxsfb/lcdif_drv.c @@ -5,6 +5,7 @@ * This code is based on drivers/gpu/drm/mxsfb/mxsfb* */ +#include <linux/cleanup.h> #include <linux/clk.h> #include <linux/dma-mapping.h> #include <linux/io.h> @@ -53,16 +54,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(device_node) = + 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
