diff options
author | Dinghao Liu <dinghao.liu@zju.edu.cn> | 2020-08-20 12:28:27 +0800 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2020-08-26 19:26:58 +0100 |
commit | c1e6414cdc371f9ed82cefebba7538499a3059f9 (patch) | |
tree | 6665b6878e9dd114123daf54ff7d6c304d9b35c5 /sound | |
parent | d062085d61b1c2015845d1d9c475266381cce785 (diff) | |
download | linux-stable-c1e6414cdc371f9ed82cefebba7538499a3059f9.tar.gz linux-stable-c1e6414cdc371f9ed82cefebba7538499a3059f9.tar.bz2 linux-stable-c1e6414cdc371f9ed82cefebba7538499a3059f9.zip |
ASoC: qcom: common: Fix refcount imbalance on error
for_each_child_of_node returns a node pointer np with
refcount incremented. So when devm_kzalloc fails, a
pairing refcount decrement is needed to keep np's
refcount balanced.
Fixes: 16395ceee11f8 ("ASoC: qcom: common: Fix NULL pointer in of parser")
Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
Link: https://lore.kernel.org/r/20200820042828.10308-1-dinghao.liu@zju.edu.cn
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/qcom/common.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sound/soc/qcom/common.c b/sound/soc/qcom/common.c index 5194d90ddb96..fd69cf8b1f23 100644 --- a/sound/soc/qcom/common.c +++ b/sound/soc/qcom/common.c @@ -52,8 +52,10 @@ int qcom_snd_parse_of(struct snd_soc_card *card) for_each_child_of_node(dev->of_node, np) { dlc = devm_kzalloc(dev, 2 * sizeof(*dlc), GFP_KERNEL); - if (!dlc) - return -ENOMEM; + if (!dlc) { + ret = -ENOMEM; + goto err; + } link->cpus = &dlc[0]; link->platforms = &dlc[1]; |