Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c46e0079 authored by Axel Lin's avatar Axel Lin Committed by Mark Brown
Browse files

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: default avatarAxel Lin <axel.lin@gmail.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 29c798fe
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -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);