[alsa-devel] [PATCH 4/7] ASoC: soc-pcm: goto error after trying for_each_rtd_codec_dai

Pierre-Louis Bossart pierre-louis.bossart at linux.intel.com
Tue Jan 28 17:31:05 CET 2020



>>> From: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
>>>
>>> soc_pcm_open() might goto error process *during* for_each_rtd_codec_dai.
>>> In such case, fallback process need to care about operated/non-operated
>>> codec dai.
>>>
>>> But, if it goto error process *after* loop even though error happen
>>> during loop, it don't need to care about operated/non-operated.
>>> In such case code can be more simple.
>>> This patch do it. And this is prepare for soc_snd_open() cleanup
>>
>> This would mean that snd_soc_dai_shutdown() is called even for the
>> stream that returned the error.  This isn't the expected behavior.
> 
> Yeah.
> Actually, I have plan to add such flag by other patch.
> But indeed order was reversed.
> Will fixup.
> 
>> Also, bit-OR-ing the multiple error codes isn't wise, they may return
>> different error codes, and you'll mixed up to a different number.
> 
> It is used at some architecture.
> But yes, let's think about better idea.
> Will return 1st error.

I also cringed on the bit-OR'ed error codes, but I saw it's already used 
in soc-pcm.c so thought it was an agreed precedent?

		ret |= snd_soc_component_close(component, substream);
		ret |= snd_soc_component_hw_free(component, substream);

I also don't like the idea of not stopping loops on errors, or releasing 
things that haven't been properly allocated. It does simplify error 
handling but it's asking for trouble.


More information about the Alsa-devel mailing list