diff mbox series

ASoC: dapm: Fix a couple uninitialized ret variables

Message ID 20180907194033.cmt4rdiwwznaeudq@kili.mountain (mailing list archive)
State Accepted
Headers show
Series ASoC: dapm: Fix a couple uninitialized ret variables | expand

Commit Message

Dan Carpenter Sept. 7, 2018, 7:40 p.m. UTC
Smatch complains that these variables could be uninitialized.  The first
one in snd_soc_dai_link_event() is probably a false positive, because
probably we know the lists are not empty.  I would normally ignore the
warning, but GCC complains here as well so I just silenced the warning.
The "ret" in snd_soc_dapm_new_dai() does need to be initialized or it
leads to a bogus dereference in the caller.

Fixes: 3bbf5d34fd4a ("ASoC: dapm: Move error handling to snd_soc_dapm_new_control_unlocked")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Comments

Charles Keepax Sept. 10, 2018, 2:22 p.m. UTC | #1
On Fri, Sep 07, 2018 at 10:40:33PM +0300, Dan Carpenter wrote:
> Smatch complains that these variables could be uninitialized.  The first
> one in snd_soc_dai_link_event() is probably a false positive, because
> probably we know the lists are not empty.  I would normally ignore the
> warning, but GCC complains here as well so I just silenced the warning.
> The "ret" in snd_soc_dapm_new_dai() does need to be initialized or it
> leads to a bogus dereference in the caller.
> 
> Fixes: 3bbf5d34fd4a ("ASoC: dapm: Move error handling to snd_soc_dapm_new_control_unlocked")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> 
> diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
> index 9f4edcd19e02..0dcdcc23dcfd 100644
> --- a/sound/soc/soc-dapm.c
> +++ b/sound/soc/soc-dapm.c
> @@ -3623,7 +3623,7 @@ static int snd_soc_dai_link_event(struct snd_soc_dapm_widget *w,
>  	struct snd_pcm_hw_params *params = NULL;
>  	struct snd_pcm_runtime *runtime = NULL;
>  	unsigned int fmt;
> -	int ret;
> +	int ret = 0;

This one got fixed the other day in fc269c039644 ("ASoC: dapm:
Avoid uninitialised variable warning").
>  
>  	config = rtd->dai_link->params + rtd->params_select;
>  
> @@ -3938,8 +3938,10 @@ snd_soc_dapm_new_dai(struct snd_soc_card *card, struct snd_soc_pcm_runtime *rtd,
>  	dev_dbg(card->dev, "ASoC: adding %s widget\n", link_name);
>  
>  	w = snd_soc_dapm_new_control_unlocked(&card->dapm, &template);
> -	if (IS_ERR(w))
> +	if (IS_ERR(w)) {
> +		ret = PTR_ERR(w);
>  		goto outfree_kcontrol_news;
> +	}

Thanks for spotting this, looks good to me.

Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>

>  
>  	w->priv = rtd;
>  

Thanks,
Charles
diff mbox series

Patch

diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 9f4edcd19e02..0dcdcc23dcfd 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -3623,7 +3623,7 @@  static int snd_soc_dai_link_event(struct snd_soc_dapm_widget *w,
 	struct snd_pcm_hw_params *params = NULL;
 	struct snd_pcm_runtime *runtime = NULL;
 	unsigned int fmt;
-	int ret;
+	int ret = 0;
 
 	config = rtd->dai_link->params + rtd->params_select;
 
@@ -3938,8 +3938,10 @@  snd_soc_dapm_new_dai(struct snd_soc_card *card, struct snd_soc_pcm_runtime *rtd,
 	dev_dbg(card->dev, "ASoC: adding %s widget\n", link_name);
 
 	w = snd_soc_dapm_new_control_unlocked(&card->dapm, &template);
-	if (IS_ERR(w))
+	if (IS_ERR(w)) {
+		ret = PTR_ERR(w);
 		goto outfree_kcontrol_news;
+	}
 
 	w->priv = rtd;