On Wed, 07 Dec 2022 15:35:12 +0100, Cezary Rojewski wrote: > > 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? The return -EINVAL would be OK. As this must not happen, it can be even with WARN_ON(). thanks, Takashi