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 <[email protected]> Reported-by: Dan Carpenter <[email protected]> Signed-off-by: Peter Ujfalusi <[email protected]> Reviewed-by: AngeloGioacchino Del Regno <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
1 parent 2855e16 commit fb42936

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

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)