ASoC: SOF: topology: return error if sof_connect_dai_widget() fails
authorRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Mon, 4 Oct 2021 21:27:29 +0000 (16:27 -0500)
committerMark Brown <broonie@kernel.org>
Tue, 5 Oct 2021 12:09:56 +0000 (13:09 +0100)
Return the error if sof_connect_dai_widget() fails to
abort topology loading and prevent card registration.

Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20211004212729.199550-4-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/topology.c

index b54b3d2..534f004 100644 (file)
@@ -2379,13 +2379,14 @@ static int sof_widget_ready(struct snd_soc_component *scomp, int index,
                }
 
                ret = sof_widget_load_dai(scomp, index, swidget, tw, dai);
-               if (ret == 0) {
-                       sof_connect_dai_widget(scomp, w, tw, dai);
-                       list_add(&dai->list, &sdev->dai_list);
-                       swidget->private = dai;
-               } else {
+               if (!ret)
+                       ret = sof_connect_dai_widget(scomp, w, tw, dai);
+               if (ret < 0) {
                        kfree(dai);
+                       break;
                }
+               list_add(&dai->list, &sdev->dai_list);
+               swidget->private = dai;
                break;
        case snd_soc_dapm_mixer:
                ret = sof_widget_load_mixer(scomp, index, swidget, tw);