Commit 4e8748fc authored by Christophe JAILLET's avatar Christophe JAILLET Committed by Mark Brown

ASoC: ux500: mop500: Fix some refcounted resources issues

There are 2 issues here:
   - if one of the 'of_parse_phandle' fails, calling 'mop500_of_node_put()'
     is a no-op because the 'mop500_dai_links' structure has not been
     initialized yet, so the referenced are not decremented
   - The reference stored in 'mop500_dai_links[i].codecs' is refcounted
     only once in the probe and must be decremented only once.

Fixes: 39013bd6 ("ASoC: Ux500: Dispose of device nodes correctly")
Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/20200512100705.246349-1-christophe.jaillet@wanadoo.frSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 936b9df7
...@@ -63,10 +63,11 @@ static void mop500_of_node_put(void) ...@@ -63,10 +63,11 @@ static void mop500_of_node_put(void)
{ {
int i; int i;
for (i = 0; i < 2; i++) { for (i = 0; i < 2; i++)
of_node_put(mop500_dai_links[i].cpus->of_node); of_node_put(mop500_dai_links[i].cpus->of_node);
of_node_put(mop500_dai_links[i].codecs->of_node);
} /* Both links use the same codec, which is refcounted only once */
of_node_put(mop500_dai_links[0].codecs->of_node);
} }
static int mop500_of_probe(struct platform_device *pdev, static int mop500_of_probe(struct platform_device *pdev,
...@@ -81,7 +82,9 @@ static int mop500_of_probe(struct platform_device *pdev, ...@@ -81,7 +82,9 @@ static int mop500_of_probe(struct platform_device *pdev,
if (!(msp_np[0] && msp_np[1] && codec_np)) { if (!(msp_np[0] && msp_np[1] && codec_np)) {
dev_err(&pdev->dev, "Phandle missing or invalid\n"); dev_err(&pdev->dev, "Phandle missing or invalid\n");
mop500_of_node_put(); for (i = 0; i < 2; i++)
of_node_put(msp_np[i]);
of_node_put(codec_np);
return -EINVAL; return -EINVAL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment