Skip to content
Snippets Groups Projects
Unverified Commit 8201f11a authored by Stephan Gerhold's avatar Stephan Gerhold Committed by Mark Brown
Browse files

ASoC: qcom: apq8016_sbc: Fix oops with multiple DAI links


apq8016_sbc_parse_of() sets up multiple DAI links, depending on the
number of nodes in the device tree. However, at the moment
CPU and platform components are only allocated for the first link.
This causes an oops when more than one link is defined:

	Internal error: Oops: 96000044 [#1] SMP
	CPU: 0 PID: 1015 Comm: kworker/0:2 Not tainted 5.3.0-rc1 #4
	Call trace:
	 apq8016_sbc_platform_probe+0x1a8/0x3f0
	 platform_drv_probe+0x50/0xa0
	...

Move the allocation inside the loop to ensure that each link is
properly initialized.

Fixes: 98b232ca ("ASoC: qcom: apq8016_sbc: use modern dai_link style")
Signed-off-by: default avatarStephan Gerhold <stephan@gerhold.net>
Acked-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/20190722130352.95874-1-stephan@gerhold.net


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 45004d66
No related branches found
No related tags found
No related merge requests found
...@@ -150,17 +150,17 @@ static struct apq8016_sbc_data *apq8016_sbc_parse_of(struct snd_soc_card *card) ...@@ -150,17 +150,17 @@ static struct apq8016_sbc_data *apq8016_sbc_parse_of(struct snd_soc_card *card)
link = data->dai_link; link = data->dai_link;
dlc = devm_kzalloc(dev, 2 * sizeof(*dlc), GFP_KERNEL); for_each_child_of_node(node, np) {
if (!dlc) dlc = devm_kzalloc(dev, 2 * sizeof(*dlc), GFP_KERNEL);
return ERR_PTR(-ENOMEM); if (!dlc)
return ERR_PTR(-ENOMEM);
link->cpus = &dlc[0]; link->cpus = &dlc[0];
link->platforms = &dlc[1]; link->platforms = &dlc[1];
link->num_cpus = 1; link->num_cpus = 1;
link->num_platforms = 1; link->num_platforms = 1;
for_each_child_of_node(node, np) {
cpu = of_get_child_by_name(np, "cpu"); cpu = of_get_child_by_name(np, "cpu");
codec = of_get_child_by_name(np, "codec"); codec = of_get_child_by_name(np, "codec");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment