ASoC: SOF: Intel: hda-stream: Do not dereference hstream until it is safe
authorPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
Tue, 4 Apr 2023 09:21:04 +0000 (12:21 +0300)
committerMark Brown <broonie@kernel.org>
Tue, 4 Apr 2023 11:42:32 +0000 (12:42 +0100)
Only access hext_stream->hstream after it has been checked for NULL pointer

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Link: https://lore.kernel.org/r/20230404092115.27949-2-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/intel/hda-stream.c

index c37ef58..50e9299 100644 (file)
@@ -485,9 +485,8 @@ int hda_dsp_stream_hw_params(struct snd_sof_dev *sdev,
 {
        const struct sof_intel_dsp_desc *chip = get_chip_info(sdev->pdata);
        struct hdac_bus *bus = sof_to_bus(sdev);
-       struct hdac_stream *hstream = &hext_stream->hstream;
-       int sd_offset = SOF_STREAM_SD_OFFSET(hstream);
-       int ret;
+       struct hdac_stream *hstream;
+       int sd_offset, ret;
        u32 dma_start = SOF_HDA_SD_CTL_DMA_START;
        u32 mask;
        u32 run;
@@ -502,6 +501,9 @@ int hda_dsp_stream_hw_params(struct snd_sof_dev *sdev,
                return -ENODEV;
        }
 
+       hstream = &hext_stream->hstream;
+       sd_offset = SOF_STREAM_SD_OFFSET(hstream);
+
        /* decouple host and link DMA */
        mask = 0x1 << hstream->index;
        snd_sof_dsp_update_bits(sdev, HDA_DSP_PP_BAR, SOF_HDA_REG_PP_PPCTL,