Messages in this thread Patch in this message | | | Subject | [PATCH] ASoC: Fix snd_soc_register_dais error handling | From | Axel Lin <> | Date | Wed, 03 Nov 2010 15:04:45 +0800 |
| |
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> --- sound/soc/soc-core.c | 9 ++++----- 1 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 614a8b3..441285a 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -3043,8 +3043,10 @@ int snd_soc_register_dais(struct device *dev, for (i = 0; i < count; i++) { dai = kzalloc(sizeof(struct snd_soc_dai), GFP_KERNEL); - if (dai == NULL) - return -ENOMEM; + if (dai == NULL) { + ret = -ENOMEM; + goto err; + } /* create DAI component name */ dai->name = fmt_multiple_name(dev, &dai_drv[i]); @@ -3263,9 +3265,6 @@ int snd_soc_register_codec(struct device *dev, return 0; error: - for (i--; i >= 0; i--) - snd_soc_unregister_dai(dev); - if (codec->reg_cache) kfree(codec->reg_cache); kfree(codec->name); -- 1.7.2
| |