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

Commit cb67286d authored by Peter Ujfalusi's avatar Peter Ujfalusi Committed by Mark Brown
Browse files

ASoC: TWL4030: Module unloading fix



The module unloading path had several problems:
- it freed up the private structure twice
- it freed up the codec structure, which was allocated as part
  of the private structure
- it did not freed up the reg_cache
- it did not unregistered the dais and the codec

Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@nokia.com>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 8c126474
Loading
Loading
Loading
Loading
+3 −2
Original line number Original line Diff line number Diff line
@@ -2152,8 +2152,6 @@ static int twl4030_soc_remove(struct platform_device *pdev)
	twl4030_set_bias_level(codec, SND_SOC_BIAS_OFF);
	twl4030_set_bias_level(codec, SND_SOC_BIAS_OFF);
	snd_soc_free_pcms(socdev);
	snd_soc_free_pcms(socdev);
	snd_soc_dapm_free(socdev);
	snd_soc_dapm_free(socdev);
	kfree(codec->private_data);
	kfree(codec);


	return 0;
	return 0;
}
}
@@ -2237,6 +2235,9 @@ static int __devexit twl4030_codec_remove(struct platform_device *pdev)
{
{
	struct twl4030_priv *twl4030 = platform_get_drvdata(pdev);
	struct twl4030_priv *twl4030 = platform_get_drvdata(pdev);


	snd_soc_unregister_dais(&twl4030_dai[0], ARRAY_SIZE(twl4030_dai));
	snd_soc_unregister_codec(&twl4030->codec);
	kfree(twl4030->codec.reg_cache);
	kfree(twl4030);
	kfree(twl4030);


	twl4030_codec = NULL;
	twl4030_codec = NULL;