diff options
Diffstat (limited to 'drivers/dma-buf/dma-buf.c')
| -rw-r--r-- | drivers/dma-buf/dma-buf.c | 7 | 
1 files changed, 4 insertions, 3 deletions
| diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c index 4a2c07ee6677..6355ab38d630 100644 --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c @@ -33,6 +33,7 @@  #include <linux/seq_file.h>  #include <linux/poll.h>  #include <linux/reservation.h> +#include <linux/mm.h>  #include <uapi/linux/dma-buf.h> @@ -90,7 +91,7 @@ static int dma_buf_mmap_internal(struct file *file, struct vm_area_struct *vma)  	dmabuf = file->private_data;  	/* check for overflowing the buffer's size */ -	if (vma->vm_pgoff + ((vma->vm_end - vma->vm_start) >> PAGE_SHIFT) > +	if (vma->vm_pgoff + vma_pages(vma) >  	    dmabuf->size >> PAGE_SHIFT)  		return -EINVAL; @@ -723,11 +724,11 @@ int dma_buf_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma,  		return -EINVAL;  	/* check for offset overflow */ -	if (pgoff + ((vma->vm_end - vma->vm_start) >> PAGE_SHIFT) < pgoff) +	if (pgoff + vma_pages(vma) < pgoff)  		return -EOVERFLOW;  	/* check for overflowing the buffer's size */ -	if (pgoff + ((vma->vm_end - vma->vm_start) >> PAGE_SHIFT) > +	if (pgoff + vma_pages(vma) >  	    dmabuf->size >> PAGE_SHIFT)  		return -EINVAL; | 
