qmc_audio_probe() manually puts the current child node before returning from the DAI parsing loop on error.
Use for_each_available_child_of_node_scoped() so the current child node is released automatically on early return and normal loop exit. Signed-off-by: Cássio Gabriel <[email protected]> --- sound/soc/fsl/fsl_qmc_audio.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/sound/soc/fsl/fsl_qmc_audio.c b/sound/soc/fsl/fsl_qmc_audio.c index 76e014dfb6d7..d0f644573f49 100644 --- a/sound/soc/fsl/fsl_qmc_audio.c +++ b/sound/soc/fsl/fsl_qmc_audio.c @@ -905,7 +905,6 @@ static int qmc_audio_probe(struct platform_device *pdev) { struct device_node *np = pdev->dev.of_node; struct qmc_audio *qmc_audio; - struct device_node *child; unsigned int i; int ret; @@ -931,14 +930,12 @@ static int qmc_audio_probe(struct platform_device *pdev) } i = 0; - for_each_available_child_of_node(np, child) { + for_each_available_child_of_node_scoped(np, child) { ret = qmc_audio_dai_parse(qmc_audio, child, qmc_audio->dais + i, qmc_audio->dai_drivers + i); - if (ret) { - of_node_put(child); + if (ret) return ret; - } i++; } -- 2.54.0
