Re: [PATCH] ALSA: pcm: fix buffer_bytes max constrained by preallocated bytes issue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2020/1/17 下午6:30, Takashi Iwai wrote:
On Fri, 17 Jan 2020 11:13:31 +0100,
Keyon Jie wrote:



On 2020/1/17 下午3:57, Takashi Iwai wrote:
On Fri, 17 Jan 2020 06:30:18 +0100,
Keyon Jie wrote:

On 2020/1/17 上午4:37, Takashi Iwai wrote:

Hi Takashi, I get your concern here, but if we switch to use dma_max
limit, we won't change the preallocated buffer, it will be still 64KB
for each stream, user space can ask for re-allocate buffer for each
stream up to 32MB, but those pinned and can't be swapped out ones are
the 64KB preallocated ones only, am I wrong?

No, in general, all sound hardware buffers are pinned.

Sorry, I must have been wrong here, what I was focusing on is those
allocated SG DMA buffers, I am not sure if they are those you called
"hardware buffers" here.

My understanding was like this:

1. in pcm_new() stage, the device PCM driver should call
snd_pcm_lib_preallocate_pages()->
	snd_pcm_lib_preallocate_pages()->
		preallocate_pcm_pages()
and then the substream->dma_buffer is initialized with the
preallocated buffer.

2. in pcm_open() stage, the device PCM driver should call
snd_pcm_lib_malloc_pages()->
	snd_dma_alloc_pages() //if we need to reallocate bigger
buffer. *The substream->dma_buffer won't be freed, Takashi, this is
what I thought you named "pinned" buffer.* And those reallocated
bigger buffer via snd_dma_alloc_pages() will be freed at pcm_close()
per my understanding?

What I meant as "pinned" is that the pages are not swapped out by
swapper process like the user-space or anonymous pages.
So if you open all streams (say 16 streams) on a machine with 32MB
buffers, it'll cost a half GB.  And, we have no restriction about
which user may do it, so all normal users who have the access to the
sound device can consume a half GB kernel space pages easily.  For a
big server it's no problem, but for a small system, it's costing.

Understood, you are concerning about intentional attack from user space about memory consuming, you propose that normal user should be permitted to use the default 64KB only, if larger buffer required, please use proc fs expert mode, is my understanding correct?

Thanks,
~Keyon



Takashi

_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel




[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux