Commit d1e81428 authored by Mark Brown's avatar Mark Brown

ASoC: core: Clean up DAPM before the card debugfs

Both the card and DAPM cleanups recursively delete their debugfs
directories.  Since the DAPM debugfs subdirectory for the card is
located within the card debugfs this means we end up trying to double
free the DAPM subdirectory.  Reorder the cleanup to free the card
debugfs after we've cleaned up DAPM and it has deleted its own
subdirectory.
Reported-by: default avatarRussell King - ARM Linux <linux@armlinux.org.uk>
Tested-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 29b4817d
...@@ -2083,14 +2083,13 @@ static int soc_cleanup_card_resources(struct snd_soc_card *card) ...@@ -2083,14 +2083,13 @@ static int soc_cleanup_card_resources(struct snd_soc_card *card)
/* remove auxiliary devices */ /* remove auxiliary devices */
soc_remove_aux_devices(card); soc_remove_aux_devices(card);
snd_soc_dapm_free(&card->dapm);
soc_cleanup_card_debugfs(card); soc_cleanup_card_debugfs(card);
/* remove the card */ /* remove the card */
if (card->remove) if (card->remove)
card->remove(card); card->remove(card);
snd_soc_dapm_free(&card->dapm);
snd_card_free(card->snd_card); snd_card_free(card->snd_card);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment