[bug report] ALSA: hda: Interrupt servicing and BDL setup for compress streams
Cezary Rojewski
cezary.rojewski at intel.com
Wed Dec 7 15:35:12 CET 2022
On 2022-12-07 3:28 PM, Dan Carpenter wrote:
> Hello Cezary Rojewski,
>
> The patch 3e9582267e3a: "ALSA: hda: Interrupt servicing and BDL setup
> for compress streams" from Dec 2, 2022, leads to the following Smatch
> static checker warning:
>
> sound/hda/hdac_stream.c:544 snd_hdac_stream_setup_periods()
> error: uninitialized symbol 'dmab'.
>
> sound/hda/hdac_stream.c
> 487 int snd_hdac_stream_setup_periods(struct hdac_stream *azx_dev)
> 488 {
> 489 struct hdac_bus *bus = azx_dev->bus;
> 490 struct snd_pcm_substream *substream = azx_dev->substream;
> 491 struct snd_compr_stream *cstream = azx_dev->cstream;
> 492 struct snd_pcm_runtime *runtime = NULL;
> 493 struct snd_dma_buffer *dmab;
> 494 __le32 *bdl;
> 495 int i, ofs, periods, period_bytes;
> 496 int pos_adj, pos_align;
> 497
> 498 if (substream) {
> 499 runtime = substream->runtime;
> 500 dmab = snd_pcm_get_dma_buf(substream);
> 501 } else if (cstream) {
> 502 dmab = snd_pcm_get_dma_buf(cstream);
> 503 }
>
> dmab is not initialized on else path.
Hello,
Thanks for the report. Perhaps I should just do: s/else if/else/ as the
situation with ->substream AND ->cstream being uninitialized is invalid.
Before support for compress stream was added in this part of the code,
it was always assumed ->substream is valid.
So, either s/else if/else or append:
} else {
return -EINVAL;
}
Takashi, what do you think?
Regards,
Czarek
More information about the Alsa-devel
mailing list