| From 2b2d5c4db732c027a14987cfccf767dac1b45170 Mon Sep 17 00:00:00 2001 |
| From: Dragos Tarcatu <dragos_tarcatu@mentor.com> |
| Date: Fri, 7 Feb 2020 20:53:24 +0200 |
| Subject: ASoC: topology: Fix memleak in soc_tplg_link_elems_load() |
| |
| From: Dragos Tarcatu <dragos_tarcatu@mentor.com> |
| |
| commit 2b2d5c4db732c027a14987cfccf767dac1b45170 upstream. |
| |
| If soc_tplg_link_config() fails, _link needs to be freed in case of |
| topology ABI version mismatch. However the current code is returning |
| directly and ends up leaking memory in this case. |
| This patch fixes that. |
| |
| Fixes: 593d9e52f9bb ("ASoC: topology: Add support to configure existing physical DAI links") |
| Signed-off-by: Dragos Tarcatu <dragos_tarcatu@mentor.com> |
| Link: https://lore.kernel.org/r/20200207185325.22320-2-dragos_tarcatu@mentor.com |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| sound/soc/soc-topology.c | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| --- a/sound/soc/soc-topology.c |
| +++ b/sound/soc/soc-topology.c |
| @@ -2335,8 +2335,11 @@ static int soc_tplg_link_elems_load(stru |
| } |
| |
| ret = soc_tplg_link_config(tplg, _link); |
| - if (ret < 0) |
| + if (ret < 0) { |
| + if (!abi_match) |
| + kfree(_link); |
| return ret; |
| + } |
| |
| /* offset by version-specific struct size and |
| * real priv data size |