diff options
Diffstat (limited to 'sound/soc/samsung/srp_alp/srp_alp.c')
-rw-r--r-- | sound/soc/samsung/srp_alp/srp_alp.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sound/soc/samsung/srp_alp/srp_alp.c b/sound/soc/samsung/srp_alp/srp_alp.c index 900dfff9c17..004b0cccb93 100644 --- a/sound/soc/samsung/srp_alp/srp_alp.c +++ b/sound/soc/samsung/srp_alp/srp_alp.c @@ -736,8 +736,14 @@ static int srp_release(struct inode *inode, struct file *file) static int srp_mmap(struct file *filep, struct vm_area_struct *vma) { unsigned long size = vma->vm_end - vma->vm_start; + unsigned long size_max; unsigned int pfn; + size_max = (srp.obuf_info.mmapped_size + PAGE_SIZE - 1) & + ~(PAGE_SIZE - 1); + if (size > size_max) + return -EINVAL; + vma->vm_flags |= VM_IO; vma->vm_flags |= VM_RESERVED; vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); |