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: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
29c798fecb
commit
c46e0079ce
|
@ -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,
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue