diff mbox series

[RFC] ASoC: core: Do not cleanup uninitialized dais on soc_pcm_open failure

Message ID 20200904123854.26742-1-cezary.rojewski@intel.com
State Superseded
Headers show
Series [RFC] ASoC: core: Do not cleanup uninitialized dais on soc_pcm_open failure | expand

Commit Message

Cezary Rojewski Sept. 4, 2020, 12:38 p.m. UTC
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(-)

Comments

Liam Girdwood Sept. 4, 2020, 4:21 p.m. UTC | #1
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>
Kuninori Morimoto Sept. 6, 2020, 11:13 p.m. UTC | #2
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
Mark Brown Sept. 7, 2020, 10:42 a.m. UTC | #3
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.
diff mbox series

Patch

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);