[alsa-devel] [PATCH] ASoC: qcom: apq8016_sbc: Fix oops with multiple DAI links

Kuninori Morimoto kuninori.morimoto.gx at renesas.com
Tue Jul 23 02:20:00 CEST 2019


Hi Stephan

> 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: 98b232ca9e0e ("ASoC: qcom: apq8016_sbc: use modern dai_link style")
> Signed-off-by: Stephan Gerhold <stephan at gerhold.net>
> ---

Ahh, sorry about that

Acked-by: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>

>  sound/soc/qcom/apq8016_sbc.c | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/sound/soc/qcom/apq8016_sbc.c b/sound/soc/qcom/apq8016_sbc.c
> index f60a71990f66..ac75838bbfab 100644
> --- a/sound/soc/qcom/apq8016_sbc.c
> +++ b/sound/soc/qcom/apq8016_sbc.c
> @@ -150,17 +150,17 @@ static struct apq8016_sbc_data *apq8016_sbc_parse_of(struct snd_soc_card *card)
>  
>  	link = data->dai_link;
>  
> -	dlc = devm_kzalloc(dev, 2 * sizeof(*dlc), GFP_KERNEL);
> -	if (!dlc)
> -		return ERR_PTR(-ENOMEM);
> +	for_each_child_of_node(node, np) {
> +		dlc = devm_kzalloc(dev, 2 * sizeof(*dlc), GFP_KERNEL);
> +		if (!dlc)
> +			return ERR_PTR(-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(node, np) {
>  		cpu = of_get_child_by_name(np, "cpu");
>  		codec = of_get_child_by_name(np, "codec");
>  
> -- 
> 2.22.0
> 


More information about the Alsa-devel mailing list