On Mon, 26 Jun 2023 13:09:00 +0200, Jaroslav Kysela wrote: > > On 26. 06. 23 13:02, Takashi Iwai wrote: > > On Mon, 26 Jun 2023 09:56:47 +0200, > > Jaroslav Kysela wrote: > >> > >> On 26. 06. 23 9:33, Takashi Iwai wrote: > >>> On Mon, 26 Jun 2023 09:31:18 +0200, > >>> Tuo Li wrote: > >>>> > >>>> > >>>> Hello, > >>>> > >>>> Thank you for your reply! > >>> > >>> FWIW, the simplest fix would be something like below, just extending > >>> the mutex coverage. But it'll serialize the all calls, so it might > >>> influence on the performance, while it's the safest way. > >> > >> It may be better to update total_pcm_alloc_bytes before > >> snd_dma_alloc_dir_pages() call and decrease this value when allocation > >> fails to allow parallel allocations. Then the mutex can be held only > >> for the total_pcm_alloc_bytes variable update. > > > > Yes, it'd work. But a tricky part is that the actual allocation size > > can be bigger, and we need to correct the total_pcm_alloc_bytes after > > the allocation result. So the end result would be a patch like below, > > which is a bit more complex than the previous simpler approach. But > > it might be OK. > > The patch looks good, but it may be better to move the "post" variable > updates to an inline function (mutex lock - update - mutex unlock) for > a better readability. Sounds like a good idea. Let me cook later. Takashi