diff options
author | Charles Keepax <ckeepax@opensource.wolfsonmicro.com> | 2016-08-11 14:39:00 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-08-11 15:00:44 +0100 |
commit | 70fcad495b9903d362bdbf9ffba23259294064c8 (patch) | |
tree | fbdcf974a887faa995afc278f1acf6038de2178e /sound | |
parent | 29b4817d4018df78086157ea3a55c1d9424a7cfc (diff) | |
download | linux-70fcad495b9903d362bdbf9ffba23259294064c8.tar.gz linux-70fcad495b9903d362bdbf9ffba23259294064c8.tar.bz2 linux-70fcad495b9903d362bdbf9ffba23259294064c8.zip |
ASoC: Fix leak of rtd in soc_bind_dai_link
If we fail to find a platform we simply return EPROBE_DEFER,
but we have allocated the rtd pointer. All error paths before
soc_add_pcm_runtime need to call soc_free_pcm_runtime first to
avoid leaking the rtd pointer. A suitable error path already
exists and is used else where in the function so simply use that
here as well.
Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/soc-core.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 16369cad4803..b0e23db83695 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -1056,7 +1056,7 @@ static int soc_bind_dai_link(struct snd_soc_card *card, if (!rtd->platform) { dev_err(card->dev, "ASoC: platform %s not registered\n", dai_link->platform_name); - return -EPROBE_DEFER; + goto _err_defer; } soc_add_pcm_runtime(card, rtd); |