[PATCH 1/2] ALSA: memalloc: Align buffer allocations in page size
Lars-Peter Clausen
lars at metafoo.de
Fri Dec 18 16:31:36 CET 2020
On 12/18/20 3:56 PM, Takashi Iwai wrote:
> Currently the standard memory allocator (snd_dma_malloc_pages*())
> passes the byte size to allocate as is. Most of the backends
> allocates real pages, hence the actual allocations are aligned in page
> size. However, the genalloc doesn't seem assuring the size alignment,
> hence it may result in the access outside the buffer when the whole
> memory pages are exposed via mmap.
>
> For avoiding such inconsistencies, this patch makes the allocation
> size always to be aligned in page size.
>
> Note that, after this change, snd_dma_buffer.bytes field contains the
> aligned size, not the originally requested size. This value is also
> used for releasing the pages in return.
>
> Signed-off-by: Takashi Iwai <tiwai at suse.de>
FWIW
Reviewed-by: Lars-Peter Clausen <lars at metafoo.de>
> ---
> sound/core/memalloc.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/sound/core/memalloc.c b/sound/core/memalloc.c
> index 0f335162f87c..966bef5acc75 100644
> --- a/sound/core/memalloc.c
> +++ b/sound/core/memalloc.c
> @@ -133,6 +133,7 @@ int snd_dma_alloc_pages(int type, struct device *device, size_t size,
> if (WARN_ON(!dmab))
> return -ENXIO;
>
> + size = PAGE_ALIGN(size);
> dmab->dev.type = type;
> dmab->dev.dev = device;
> dmab->bytes = 0;
More information about the Alsa-devel
mailing list