[PATCH] [RFC] ASoC: core: Do not cleanup uninitialized dais on soc_pcm_open failure
Introduce for_each_rtd_dais_rollback macro which behaves exactly like for_each_codec_dais_rollback and its cpu_dais equivalent but for all dais instead.
Use newly added macro to fix soc_pcm_open error path and prevent uninitialized dais from being cleaned-up.
Signed-off-by: Cezary Rojewski cezary.rojewski@intel.com --- include/sound/soc.h | 2 ++ sound/soc/soc-pcm.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/include/sound/soc.h b/include/sound/soc.h index b94ebff12350..09a7d8409ade 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h @@ -1193,6 +1193,8 @@ struct snd_soc_pcm_runtime { ((i) < (rtd)->num_cpus + (rtd)->num_codecs) && \ ((dai) = (rtd)->dais[i]); \ (i)++) +#define for_each_rtd_dais_rollback(rtd, i, dai) \ + for (; (--(i) >= 0) && ((dai) = (rtd)->dais[i]);)
void snd_soc_close_delayed_work(struct snd_soc_pcm_runtime *rtd);
diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c index 00ac1cbf6f88..4c9d4cd8cf0b 100644 --- a/sound/soc/soc-pcm.c +++ b/sound/soc/soc-pcm.c @@ -812,7 +812,7 @@ static int soc_pcm_open(struct snd_pcm_substream *substream) return 0;
config_err: - for_each_rtd_dais(rtd, i, dai) + for_each_rtd_dais_rollback(rtd, i, dai) snd_soc_dai_shutdown(dai, substream);
snd_soc_link_shutdown(substream);
On Fri, 2020-09-04 at 14:38 +0200, Cezary Rojewski wrote:
Introduce for_each_rtd_dais_rollback macro which behaves exactly like
for_each_codec_dais_rollback and its cpu_dais equivalent but for all
dais instead.
Use newly added macro to fix soc_pcm_open error path and prevent
uninitialized dais from being cleaned-up.
Signed-off-by: Cezary Rojewski cezary.rojewski@intel.com
Acked-by: Liam Girdwood liam.r.girdwood@linux.intel.com
Hi Cezary
Introduce for_each_rtd_dais_rollback macro which behaves exactly like for_each_codec_dais_rollback and its cpu_dais equivalent but for all dais instead.
Use newly added macro to fix soc_pcm_open error path and prevent uninitialized dais from being cleaned-up.
Signed-off-by: Cezary Rojewski cezary.rojewski@intel.com
Thank you for your patch
Acked-by: Kuninori Morimoto kuninori.morimoto.gx@renesas.com
Thank you for your help !!
Best regards --- Kuninori Morimoto
On 2020-09-04 2:38 PM, Cezary Rojewski wrote:
Introduce for_each_rtd_dais_rollback macro which behaves exactly like for_each_codec_dais_rollback and its cpu_dais equivalent but for all dais instead.
Use newly added macro to fix soc_pcm_open error path and prevent uninitialized dais from being cleaned-up.
Mark, may I re-send this patch with a quick update - append 'Fixes' and remove '[RFC]' tags - before this gets merged? Change would fill complete with these updates.
Czarek
On Mon, Sep 07, 2020 at 08:55:58AM +0200, Cezary Rojewski wrote:
Mark, may I re-send this patch with a quick update - append 'Fixes' and remove '[RFC]' tags - before this gets merged? Change would fill complete with these updates.
Sure. For something like this it's better to just go ahead and do the resend whatever, worst case it'll get ignored best case less waiting.
participants (4)
-
Cezary Rojewski
-
Kuninori Morimoto
-
Liam Girdwood
-
Mark Brown