ASoC: SOF: ipc4-pcm: Do not run the trigger pipelines if no spipe is stored
authorPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
Fri, 27 Jan 2023 12:00:31 +0000 (14:00 +0200)
committerMark Brown <broonie@kernel.org>
Fri, 27 Jan 2023 12:14:13 +0000 (12:14 +0000)
If the pipeline setup fails at the first widget/pipeline then we will have
no spipe stored under the pipeline_list->pipelines, the
pipeline_list->count is 0.

If this is the case we would have a NULL pointer dereference if the
execution is allowed to proceed.

Check for this condition along with the pipeline_list->pipelines check

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>
Link: https://lore.kernel.org/r/20230127120031.10709-19-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/ipc4-pcm.c

index 2d89d37..521090d 100644 (file)
@@ -213,7 +213,7 @@ static int sof_ipc4_trigger_pipelines(struct snd_soc_component *component,
        pipeline_list = &spcm->stream[substream->stream].pipeline_list;
 
        /* nothing to trigger if the list is empty */
-       if (!pipeline_list->pipelines)
+       if (!pipeline_list->pipelines || !pipeline_list->count)
                return 0;
 
        /* allocate memory for the pipeline data */