Message ID | 20240308090502.2136760-3-cezary.rojewski@intel.com |
---|---|
State | Accepted |
Commit | 6974857c2b2c7e2d2db59c0e23cc42b0efc58cd8 |
Headers | show |
Series | ASoC: Harden DAPM route checks and Intel fixes | expand |
On 3/8/24 03:04, Cezary Rojewski wrote: > 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> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
diff --git a/sound/soc/soc-topology.c b/sound/soc/soc-topology.c index d6d368837235..90ca37e008b3 100644 --- a/sound/soc/soc-topology.c +++ b/sound/soc/soc-topology.c @@ -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;
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> --- sound/soc/soc-topology.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)