OSDN Git Service

ASoC: qcom: common: Fix refcounting in qcom_snd_parse_of()
authorDan Carpenter <dan.carpenter@oracle.com>
Thu, 5 Nov 2020 12:51:54 +0000 (15:51 +0300)
committerMark Brown <broonie@kernel.org>
Tue, 10 Nov 2020 17:28:25 +0000 (17:28 +0000)
commit4e59dd249cd513a211e2ecce2cb31f4e29a5ce5b
treedb796adcaf177bf737bdae5182ab3e45c62b33c0
parent048751de568816de52dedf0fa967cceada7885f1
ASoC: qcom: common: Fix refcounting in qcom_snd_parse_of()

There are two issues in this function.

1) We can't drop the refrences on "cpu", "codec" and "platform" before
   we take the reference.  This doesn't cause a problem on the first
   iteration because those pointers start as NULL so the of_node_put()
   is a no-op.  But on the subsequent iterations, it will lead to a use
   after free.

2) If the devm_kzalloc() allocation failed then the code returned
   directly instead of cleaning up.

Fixes: c1e6414cdc37 ("ASoC: qcom: common: Fix refcount imbalance on error")
Fixes: 1e36ea360ab9 ("ASoC: qcom: common: use modern dai_link style")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Link: https://lore.kernel.org/r/20201105125154.GA176426@mwanda
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/qcom/common.c