aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2014-10-08 10:31:18 -0400
committerMark Brown <broonie@kernel.org>2014-10-08 10:42:33 -0400
commita66ae631a3cffb00f441b229a07fa1b4c72e738a (patch)
tree023dc30955c3702f7f306366413f6cf389b9446b /sound/soc
parenta5448c88b812390a3622e76d774e10c0da1fb970 (diff)
ASoC: mc13783: Ensure we only try to dereference valid of_nodes
Reported-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/codecs/mc13783.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/sound/soc/codecs/mc13783.c b/sound/soc/codecs/mc13783.c
index 388f90a597fa..71f775aad7c7 100644
--- a/sound/soc/codecs/mc13783.c
+++ b/sound/soc/codecs/mc13783.c
@@ -765,12 +765,18 @@ static int __init mc13783_codec_probe(struct platform_device *pdev)
765 return -ENOSYS; 765 return -ENOSYS;
766 766
767 ret = of_property_read_u32(np, "adc-port", &priv->adc_ssi_port); 767 ret = of_property_read_u32(np, "adc-port", &priv->adc_ssi_port);
768 if (ret) 768 if (ret) {
769 goto out; 769 of_node_put(np);
770 return ret;
771 }
770 772
771 ret = of_property_read_u32(np, "dac-port", &priv->dac_ssi_port); 773 ret = of_property_read_u32(np, "dac-port", &priv->dac_ssi_port);
772 if (ret) 774 if (ret) {
773 goto out; 775 of_node_put(np);
776 return ret;
777 }
778
779 of_node_put(np);
774 } 780 }
775 781
776 dev_set_drvdata(&pdev->dev, priv); 782 dev_set_drvdata(&pdev->dev, priv);
@@ -783,8 +789,6 @@ static int __init mc13783_codec_probe(struct platform_device *pdev)
783 ret = snd_soc_register_codec(&pdev->dev, &soc_codec_dev_mc13783, 789 ret = snd_soc_register_codec(&pdev->dev, &soc_codec_dev_mc13783,
784 mc13783_dai_async, ARRAY_SIZE(mc13783_dai_async)); 790 mc13783_dai_async, ARRAY_SIZE(mc13783_dai_async));
785 791
786out:
787 of_node_put(np);
788 return ret; 792 return ret;
789} 793}
790 794