diff options
Diffstat (limited to 'drivers/media/video/samsung/jpeg/jpeg_dev.c')
-rw-r--r-- | drivers/media/video/samsung/jpeg/jpeg_dev.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/media/video/samsung/jpeg/jpeg_dev.c b/drivers/media/video/samsung/jpeg/jpeg_dev.c index 4038fd2..6ebcfb6 100644 --- a/drivers/media/video/samsung/jpeg/jpeg_dev.c +++ b/drivers/media/video/samsung/jpeg/jpeg_dev.c @@ -31,6 +31,7 @@ #include <linux/clk.h> #include <linux/semaphore.h> #include <linux/vmalloc.h> +#include <linux/cma.h> #include <asm/page.h> #include <linux/sched.h> @@ -247,6 +248,12 @@ int jpeg_mmap(struct file *filp, struct vm_area_struct *vma) size = vma->vm_end - vma->vm_start; + if (!cma_is_registered_region(jpeg_ctrl->mem.base, size)) { + pr_err("[%s] handling non-cma region (%#x@%#x)is prohibited\n", + __func__, (unsigned int)size, jpeg_ctrl->mem.base); + return -EINVAL; + } + vma->vm_flags |= VM_RESERVED | VM_IO; vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); |