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
