mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	ASoC: SOF: sof-audio: skip prepare/unprepare if swidget is NULL
Skip preparing/unpreparing widgets if the swidget pointer is NULL. This
will be true in the case of virtual widgets in topology that were added
for reusing the legacy HDA machine driver with SOF.
Fixes: 9862dcf702 ("ASoC: SOF: don't unprepare widget used other pipelines")
Cc: <stable@vger.kernel.org> # 6.1
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Tested-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20230118101255.29139-3-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
			
			
This commit is contained in:
		
							parent
							
								
									7d2a67e025
								
							
						
					
					
						commit
						0ad84b11f2
					
				
					 1 changed files with 2 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -272,7 +272,7 @@ sof_unprepare_widgets_in_path(struct snd_sof_dev *sdev, struct snd_soc_dapm_widg
 | 
			
		|||
	struct snd_soc_dapm_path *p;
 | 
			
		||||
 | 
			
		||||
	/* return if the widget is in use or if it is already unprepared */
 | 
			
		||||
	if (!swidget->prepared || swidget->use_count > 0)
 | 
			
		||||
	if (!swidget || !swidget->prepared || swidget->use_count > 0)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	if (widget_ops[widget->id].ipc_unprepare)
 | 
			
		||||
| 
						 | 
				
			
			@ -303,7 +303,7 @@ sof_prepare_widgets_in_path(struct snd_sof_dev *sdev, struct snd_soc_dapm_widget
 | 
			
		|||
	struct snd_soc_dapm_path *p;
 | 
			
		||||
	int ret;
 | 
			
		||||
 | 
			
		||||
	if (!widget_ops[widget->id].ipc_prepare || swidget->prepared)
 | 
			
		||||
	if (!swidget || !widget_ops[widget->id].ipc_prepare || swidget->prepared)
 | 
			
		||||
		goto sink_prepare;
 | 
			
		||||
 | 
			
		||||
	/* prepare the source widget */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue