On Mon, 09 Mar 2026 13:55:02 +0100, Thorsten Blum wrote: > > On 9. Mar 2026, at 12:59, Takashi Iwai wrote: > > On Mon, 09 Mar 2026 12:41:59 +0100, Thorsten Blum wrote: > >> Replace two list_for_each_entry() loops with list_first_entry_or_null() > >> in i2sbus_pcm_prepare(). > > > > Hmm, I guess both can be simply list_first_entry(), as the codec list > > in this code path is guaranteed to be non-empty (it's called after > > i2sbus_pcm_open() which has the check of the valid codecs). > > That guarantee only holds for open/prepare, not for i2sbus_resume() via > i2sbus_pcm_prepare_both(). It's probably uncommon in practice, but > i2sbus_pcm_prepare() should still handle it safely.
Then we should fix i2sbus_resume() instead. It can simply bail out when the codec list empty. Ditto for i2bus_suspend(). > >> Handle an empty codec list explicitly by returning -ENODEV, which avoids > >> using uninitialized 'bi.sysclock_factor' in the 32-bit code path. > > > > Which 32bit code path are you referring to...? > > The SNDRV_PCM_FORMAT_S32_BE/SNDRV_PCM_FORMAT_U32_BE branch. The description is confusing :) It's about 32bit PCM *format*, not about 32bit code path. thanks, Takashi
