]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
ASoC: SOF: ipc4-topology: Fix input format query of process modules without base...
authorPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
Wed, 29 May 2024 12:12:01 +0000 (15:12 +0300)
committerMark Brown <broonie@kernel.org>
Wed, 29 May 2024 12:34:44 +0000 (13:34 +0100)
If a process module does not have base config extension then the same
format applies to all of it's inputs and the process->base_config_ext is
NULL, causing NULL dereference when specifically crafted topology and
sequences used.

Fixes: 648fea128476 ("ASoC: SOF: ipc4-topology: set copier output format for process module")
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Cc: stable@vger.kernel.org
Link: https://msgid.link/r/20240529121201.14687-1-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/ipc4-topology.c

index beff10989324755e68237138e598fb017c47b617..33e8c5f7d9ca07966b936cc2bf6a14f4e1daf069 100644 (file)
@@ -217,6 +217,14 @@ sof_ipc4_get_input_pin_audio_fmt(struct snd_sof_widget *swidget, int pin_index)
        }
 
        process = swidget->private;
+
+       /*
+        * For process modules without base config extension, base module config
+        * format is used for all input pins
+        */
+       if (process->init_config != SOF_IPC4_MODULE_INIT_CONFIG_TYPE_BASE_CFG_WITH_EXT)
+               return &process->base_config.audio_fmt;
+
        base_cfg_ext = process->base_config_ext;
 
        /*