summaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorMike Rapoport <mike@compulab.co.il>2009-05-11 13:04:55 +0300
committerMark Brown <broonie@opensource.wolfsonmicro.com>2009-05-11 19:01:51 +0100
commit914dc18255e430ceabb10b57394e01814c69c5cd (patch)
tree469a8a5ca346aa9fc7a119457222549b42a91898 /sound
parent97a775c49c7e1b47b016a492463486a5b86da479 (diff)
downloadlinux-914dc18255e430ceabb10b57394e01814c69c5cd.tar.gz
linux-914dc18255e430ceabb10b57394e01814c69c5cd.tar.bz2
linux-914dc18255e430ceabb10b57394e01814c69c5cd.zip
ASoC: soc-core: fix crash when removing not instantiated card
If the card was not instantiated in snd_soc_instantiate_card, calling soc-remove will crash because some of codec, cpu_dai and card .remove methods are called twice. Fix this by returning from soc_remove immediately. Signed-off-by: Mike Rapoport <mike@compulab.co.il> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/soc-core.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 99712f652d0d..1cd149b9ce69 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -954,6 +954,9 @@ static int soc_remove(struct platform_device *pdev)
struct snd_soc_platform *platform = card->platform;
struct snd_soc_codec_device *codec_dev = socdev->codec_dev;
+ if (!card->instantiated)
+ return 0;
+
run_delayed_work(&card->delayed_work);
if (platform->remove)