[bug report] ASoC: mediatek: mt8186: support tdm in platform driver

Jiaxin Yu jiaxin.yu at mediatek.com
Mon Jul 25 15:24:20 CEST 2022


On Mon, 2022-07-25 at 10:28 +0300, Dan Carpenter wrote:
> Hello Jiaxin Yu,
> 
> This is a semi-automatic email about new static checker warnings.
> 
> The patch ae92dcbee8b6: "ASoC: mediatek: mt8186: support tdm in
> platform driver" from May 23, 2022, leads to the following Smatch
> complaint:
> 
>     sound/soc/mediatek/mt8186/mt8186-dai-tdm.c:424
> mtk_dai_tdm_hw_params()
>     warn: variable dereferenced before check 'tdm_priv' (see line
> 406)
> 
> sound/soc/mediatek/mt8186/mt8186-dai-tdm.c
>    405		struct mtk_afe_tdm_priv *tdm_priv = afe_priv-
> >dai_priv[tdm_id];
>    406		unsigned int tdm_mode = tdm_priv->tdm_mode;
>                                         ^^^^^^^^^^^^^^^^^^^
> Lot's of dereferences
> 
>    407		unsigned int data_mode = tdm_priv->data_mode;
>    408		unsigned int rate = params_rate(params);
>    409		unsigned int channels =
> params_channels(params);
>    410		snd_pcm_format_t format =
> params_format(params);
>    411		unsigned int bit_width =
>    412			snd_pcm_format_physical_width(format);
>    413		unsigned int tdm_channels = (data_mode ==
> TDM_DATA_ONE_PIN) ?
>    414			get_tdm_ch_per_sdata(tdm_mode,
> channels) : 2;
>    415		unsigned int lrck_width =
>    416			get_tdm_lrck_width(format, tdm_mode);
>    417		unsigned int tdm_con = 0;
>    418		bool slave_mode = tdm_priv->slave_mode;
>    419		bool lrck_inv = tdm_priv->lck_invert;
>    420		bool bck_inv = tdm_priv->bck_invert;
>    421		unsigned int tran_rate;
>    422		unsigned int tran_relatch_rate;
>    423	
>    424		if (!tdm_priv) {
>                     ^^^^^^^^^
> Checked too late
> 
>    425			dev_err(afe->dev, "%s(), tdm_priv ==
> NULL", __func__);
>    426			return -EINVAL;
> 
> regards,
> dan carpenter

Yes, it's a mistake.
In fact, the judgment here is really unnecessary. Because when
registering, if tdm_priv is NULL, registration will fail. So I will
remove this code, and check other DAI drivers, then remove judgments
link this.

Thanks,
Jiaxin.Yu




More information about the Alsa-devel mailing list