ASoC: topology: Do not ignore route checks when parsing graphs
authorCezary Rojewski <cezary.rojewski@intel.com>
Fri, 8 Mar 2024 09:04:59 +0000 (10:04 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 25 Mar 2024 00:32:38 +0000 (00:32 +0000)
One of the framework responsibilities is to ensure that the enumerated
DPCMs are valid i.e.: a valid BE is connected to a valid FE DAI. While
the are checks in soc-core.c and soc-pcm.c that verify this, a component
driver may attempt to workaround this by loading an invalid graph
through the topology file.

Be strict and fail topology loading when invalid graph is encountered.

Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Link: https://msgid.link/r/20240308090502.2136760-3-cezary.rojewski@intel.com
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-topology.c

index ba4890991f0d7850b6269c24bc83e5e2f679852c..fad9432a10f1660612b095a34f157ca673310b7a 100644 (file)
@@ -1083,8 +1083,15 @@ static int soc_tplg_dapm_graph_elems_load(struct soc_tplg *tplg,
                        break;
                }
 
-               /* add route, but keep going if some fail */
-               snd_soc_dapm_add_routes(dapm, route, 1);
+               ret = snd_soc_dapm_add_routes(dapm, route, 1);
+               if (ret) {
+                       if (!dapm->card->disable_route_checks) {
+                               dev_err(tplg->dev, "ASoC: dapm_add_routes failed: %d\n", ret);
+                               break;
+                       }
+                       dev_info(tplg->dev,
+                                "ASoC: disable_route_checks set, ignoring dapm_add_routes errors\n");
+               }
        }
 
        return ret;