Skip to content

Commit fb42936

Browse files
ujfalusibroonie
authored andcommitted
ASoC: SOF: sof-audio: prepare_widgets: Check swidget for NULL on sink failure
If the swidget is NULL we skip the preparing of the widget and jump to handle the sink path of the widget. If the prepare fails in this case we would undo the prepare but the swidget is NULL (we skipped the prepare for the widget). To avoid NULL pointer dereference in this case we must check swidget against NULL pointer once again. Fixes: 0ad84b1 ("ASoC: SOF: sof-audio: skip prepare/unprepare if swidget is NULL") Reported-by: kernel test robot <lkp@intel.com> Reported-by: Dan Carpenter <error27@gmail.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Link: https://lore.kernel.org/r/20230120102125.30653-1-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 2855e16 commit fb42936

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

sound/soc/sof/sof-audio.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,8 @@ sof_prepare_widgets_in_path(struct snd_sof_dev *sdev, struct snd_soc_dapm_widget
327327
p->walking = false;
328328
if (ret < 0) {
329329
/* unprepare the source widget */
330-
if (widget_ops[widget->id].ipc_unprepare && swidget->prepared) {
330+
if (widget_ops[widget->id].ipc_unprepare &&
331+
swidget && swidget->prepared) {
331332
widget_ops[widget->id].ipc_unprepare(swidget);
332333
swidget->prepared = false;
333334
}

0 commit comments

Comments
 (0)