From: Marek Szyprowski m.szyprowski@samsung.com
Signed-off-by: Marek Szyprowski m.szyprowski@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! + */ + if (vaddr & (dma_align - 1)) { + pr_err("userptr must be aligned to %lu bytes\n", dma_align); + return ERR_PTR(-EINVAL); + }
buf = kzalloc(sizeof *buf, GFP_KERNEL); if (!buf)