提交 c46e0079 编写于 作者: A Axel Lin 提交者: Mark Brown

ASoC: Fix snd_soc_register_dais error handling

kzalloc for dai may fail at any iteration of the for loop,
thus properly unregister already registered DAIs before return error.

The error handling code in snd_soc_register_dais() already ensure all the DAIs
are unregistered before return error, we can remove the error handling code
to unregister DAIs in snd_soc_register_codec().
Signed-off-by: NAxel Lin <axel.lin@gmail.com>
Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
上级 29c798fe
...@@ -3043,8 +3043,10 @@ int snd_soc_register_dais(struct device *dev, ...@@ -3043,8 +3043,10 @@ int snd_soc_register_dais(struct device *dev,
for (i = 0; i < count; i++) { for (i = 0; i < count; i++) {
dai = kzalloc(sizeof(struct snd_soc_dai), GFP_KERNEL); dai = kzalloc(sizeof(struct snd_soc_dai), GFP_KERNEL);
if (dai == NULL) if (dai == NULL) {
return -ENOMEM; ret = -ENOMEM;
goto err;
}
/* create DAI component name */ /* create DAI component name */
dai->name = fmt_multiple_name(dev, &dai_drv[i]); dai->name = fmt_multiple_name(dev, &dai_drv[i]);
...@@ -3263,9 +3265,6 @@ int snd_soc_register_codec(struct device *dev, ...@@ -3263,9 +3265,6 @@ int snd_soc_register_codec(struct device *dev,
return 0; return 0;
error: error:
for (i--; i >= 0; i--)
snd_soc_unregister_dai(dev);
if (codec->reg_cache) if (codec->reg_cache)
kfree(codec->reg_cache); kfree(codec->reg_cache);
kfree(codec->name); kfree(codec->name);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册