[PATCHv8 22/26] media: vb2: fail if user ptr buffer is not correctly aligned
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Wed Aug 15 13:20:52 PDT 2012
Hi Tomasz,
Thanks for the patch.
On Tuesday 14 August 2012 17:34:52 Tomasz Stanislawski wrote:
> From: Marek Szyprowski <m.szyprowski at samsung.com>
>
> Signed-off-by: Marek Szyprowski <m.szyprowski at samsung.com>
> ---
> drivers/media/video/videobuf2-dma-contig.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/media/video/videobuf2-dma-contig.c
> b/drivers/media/video/videobuf2-dma-contig.c index d44766e..11f4a46 100644
> --- a/drivers/media/video/videobuf2-dma-contig.c
> +++ b/drivers/media/video/videobuf2-dma-contig.c
> @@ -498,6 +498,16 @@ static void *vb2_dc_get_userptr(void *alloc_ctx,
> unsigned long vaddr, struct vm_area_struct *vma;
> struct sg_table *sgt;
> unsigned long contig_size;
> + unsigned long dma_align = dma_get_cache_alignment();
> +
> + /*
> + * DMA transfers are not reliable to buffers which
> + * are not cache line aligned!
> + */
Are you scared of going near the 80 columns limit ? :-)
> + if (vaddr & (dma_align - 1)) {
You could use the IS_ALIGNED macro here, but that might just be nitpicking.
> + pr_err("userptr must be aligned to %lu bytes\n", dma_align);
> + return ERR_PTR(-EINVAL);
> + }
Shouldn't you also check that the size is a multiple of dma_align ?
> buf = kzalloc(sizeof *buf, GFP_KERNEL);
> if (!buf)
--
Regards,
Laurent Pinchart
More information about the dri-devel
mailing list