Message ID | 20160713095953.GA29468@mwanda (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi, On Jul 13 2016 18:59, Dan Carpenter wrote: > My static checker complains that "resp" could be unitialized on error > when we print its value. > > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> > > diff --git a/sound/pci/mixart/mixart_mixer.c b/sound/pci/mixart/mixart_mixer.c > index 58fd79eb..51e5349 100644 > --- a/sound/pci/mixart/mixart_mixer.c > +++ b/sound/pci/mixart/mixart_mixer.c > @@ -965,7 +965,7 @@ static int mixart_update_monitoring(struct snd_mixart* chip, int channel) > int err; > struct mixart_msg request; > struct mixart_set_out_audio_level audio_level; > - u32 resp; > + u32 resp = 0; > > if(chip->pipe_out_ana.status == PIPE_UNDEFINED) > return -EINVAL; /* no pipe defined */ The 'resp' variable is firstly given to snd_mixart_send_msg(). static int mixart_update_monitoring(struct snd_mixart* chip, int channel) { ... err = snd_mixart_send_msg(chip->mgr, &request, sizeof(resp), &resp); if((err<0) || resp) { dev_dbg(chip->card->dev, "error MSG_CONNECTOR_SET_OUT_AUDIO_LEVEL card(%d) resp(%x)\n", chip->chip_idx, resp); return -EINVAL; } return 0; } When the function, snd_mixart_send_msg(), assigns nothing to the variable in error cases, dev_dbg() prints uninitialized value. Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Regards Takashi Sakamoto
On Wed, 13 Jul 2016 11:59:53 +0200, Dan Carpenter wrote: > > My static checker complains that "resp" could be unitialized on error > when we print its value. > > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Applied, thanks. Takashi > > diff --git a/sound/pci/mixart/mixart_mixer.c b/sound/pci/mixart/mixart_mixer.c > index 58fd79eb..51e5349 100644 > --- a/sound/pci/mixart/mixart_mixer.c > +++ b/sound/pci/mixart/mixart_mixer.c > @@ -965,7 +965,7 @@ static int mixart_update_monitoring(struct snd_mixart* chip, int channel) > int err; > struct mixart_msg request; > struct mixart_set_out_audio_level audio_level; > - u32 resp; > + u32 resp = 0; > > if(chip->pipe_out_ana.status == PIPE_UNDEFINED) > return -EINVAL; /* no pipe defined */ >
On Jul 13 2016 19:18, Takashi Sakamoto wrote: > Hi, > > On Jul 13 2016 18:59, Dan Carpenter wrote: >> My static checker complains that "resp" could be unitialized on error >> when we print its value. >> >> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> >> >> diff --git a/sound/pci/mixart/mixart_mixer.c >> b/sound/pci/mixart/mixart_mixer.c >> index 58fd79eb..51e5349 100644 >> --- a/sound/pci/mixart/mixart_mixer.c >> +++ b/sound/pci/mixart/mixart_mixer.c >> @@ -965,7 +965,7 @@ static int mixart_update_monitoring(struct >> snd_mixart* chip, int channel) >> int err; >> struct mixart_msg request; >> struct mixart_set_out_audio_level audio_level; >> - u32 resp; >> + u32 resp = 0; >> >> if(chip->pipe_out_ana.status == PIPE_UNDEFINED) >> return -EINVAL; /* no pipe defined */ > > The 'resp' variable is firstly given to snd_mixart_send_msg(). > > static int mixart_update_monitoring(struct snd_mixart* chip, > int channel) > { > ... > err = snd_mixart_send_msg(chip->mgr, &request, sizeof(resp), &resp); > if((err<0) || resp) { > dev_dbg(chip->card->dev, > "error MSG_CONNECTOR_SET_OUT_AUDIO_LEVEL card(%d) > resp(%x)\n", > chip->chip_idx, resp); > return -EINVAL; > } > return 0; > } > > When the function, snd_mixart_send_msg(), assigns nothing to the > variable in error cases, dev_dbg() prints uninitialized value. Hm. I realized that this interpretation is not enough. When value of the error is not negative, snd_mixart_send_msg() can assign something to the resp variable, then dev_dbg() is called. In short, when the function is successful, there's a case that the message is processed. This is a bit strange... I think a condition statement for the resp variable is needless here, as long as the variable is initialized ahead... > Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Anyway, it's better to initialize it. Regards Takashi Sakamoto
diff --git a/sound/pci/mixart/mixart_mixer.c b/sound/pci/mixart/mixart_mixer.c index 58fd79eb..51e5349 100644 --- a/sound/pci/mixart/mixart_mixer.c +++ b/sound/pci/mixart/mixart_mixer.c @@ -965,7 +965,7 @@ static int mixart_update_monitoring(struct snd_mixart* chip, int channel) int err; struct mixart_msg request; struct mixart_set_out_audio_level audio_level; - u32 resp; + u32 resp = 0; if(chip->pipe_out_ana.status == PIPE_UNDEFINED) return -EINVAL; /* no pipe defined */
My static checker complains that "resp" could be unitialized on error when we print its value. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>