aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/samsung/srp_alp/srp_alp.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/samsung/srp_alp/srp_alp.c')
-rw-r--r--sound/soc/samsung/srp_alp/srp_alp.c6
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);