diff options
author | Bjorn Andersson <bjorn.andersson@linaro.org> | 2019-06-18 07:28:13 +0200 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2019-06-19 13:04:24 +0200 |
commit | 16395ceee11f8f8af764bac76adc20a43ba1a153 (patch) | |
tree | f0b0ff2ec3d4a8e9a1e3965d5fd12e5564356dcd /sound/soc/qcom/common.c | |
parent | ASoC: Intel: sof-rt5682: correct naming for dmic16k (diff) | |
download | linux-16395ceee11f8f8af764bac76adc20a43ba1a153.tar.xz linux-16395ceee11f8f8af764bac76adc20a43ba1a153.zip |
ASoC: qcom: common: Fix NULL pointer in of parser
A snd_soc_dai_link_component is allocated and associated with the first
link, so when the code tries to assign the of_node of the second link's
"cpu" member it dereferences a NULL pointer.
Fix this by moving the allocation and assignement of
snd_soc_dai_link_components into the loop, giving us one pair per link.
Fixes: 1e36ea360ab9 ("ASoC: qcom: common: use modern dai_link style")
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Acked-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/qcom/common.c')
-rw-r--r-- | sound/soc/qcom/common.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/sound/soc/qcom/common.c b/sound/soc/qcom/common.c index c7a878507220..97488b5cc515 100644 --- a/sound/soc/qcom/common.c +++ b/sound/soc/qcom/common.c @@ -42,17 +42,17 @@ int qcom_snd_parse_of(struct snd_soc_card *card) card->num_links = num_links; link = card->dai_link; - dlc = devm_kzalloc(dev, 2 * sizeof(*dlc), GFP_KERNEL); - if (!dlc) - return -ENOMEM; + for_each_child_of_node(dev->of_node, np) { + dlc = devm_kzalloc(dev, 2 * sizeof(*dlc), GFP_KERNEL); + if (!dlc) + return -ENOMEM; - link->cpus = &dlc[0]; - link->platforms = &dlc[1]; + link->cpus = &dlc[0]; + link->platforms = &dlc[1]; - link->num_cpus = 1; - link->num_platforms = 1; + link->num_cpus = 1; + link->num_platforms = 1; - for_each_child_of_node(dev->of_node, np) { cpu = of_get_child_by_name(np, "cpu"); platform = of_get_child_by_name(np, "platform"); codec = of_get_child_by_name(np, "codec"); |