On 11/07/2022 17:33, Pierre-Louis Bossart wrote:
On 7/9/22 06:19, Alex Natalsson wrote:
if (!fe_substream) {
dev_err(fe->dev, "%s: fe_substream not initialized\n",
__func__);
return -EINVAL;
}
if (!be_substream) {
dev_err(be->dev, "%s: be_substream not initialized\n",
__func__);
return -EINVAL;
}
Will be this in upstream or needing bugzilla reporting message?
I created a patch based on this, see https://github.com/thesofproject/linux/pull/3735
I am not sure however if this is the 'right' fix. There was a comment from Peter Ujfalusi that a BE substream may be initialized later, but if that's the case then the atomicity check that was introduced is done in the wrong location.
fwiw, the dpcm_apply_symmetry() have this check at line 1822:
/* A backend may not have the requested substream */ if (!be_substream) continue;
both dpcm_be_connect() and dpcm_apply_symmetry() are called via dpcm_fe_dai_open() line 2736-2739:
/* calculate valid and active FE <-> BE dpcms */ dpcm_process_paths(fe, stream, &list, 1);
ret = dpcm_fe_dai_startup(fe_substream);
dpcm_fe_dai_open -> dpcm_process_paths -> dpcm_add_paths > dpcm_be_connect
dpcm_fe_dai_open -> dpcm_fe_dai_startup -> dpcm_apply_symmetry
If the check was added by 6246f283d5e02 ("ASoC: dpcm: skip missing substream while applying symmetry")
It looks like that it is not uncommon to not have be_substream at this point...
Takashi, we could use your guidance here. Thanks -Pierre