diff options
Diffstat (limited to 'drivers/android/binder_alloc.c')
| -rw-r--r-- | drivers/android/binder_alloc.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/android/binder_alloc.c b/drivers/android/binder_alloc.c index d42a8b2f636a..eb76a823fbb2 100644 --- a/drivers/android/binder_alloc.c +++ b/drivers/android/binder_alloc.c @@ -22,6 +22,7 @@  #include <asm/cacheflush.h>  #include <linux/uaccess.h>  #include <linux/highmem.h> +#include <linux/sizes.h>  #include "binder_alloc.h"  #include "binder_trace.h" @@ -689,7 +690,9 @@ int binder_alloc_mmap_handler(struct binder_alloc *alloc,  	alloc->buffer = (void __user *)vma->vm_start;  	mutex_unlock(&binder_alloc_mmap_lock); -	alloc->pages = kcalloc((vma->vm_end - vma->vm_start) / PAGE_SIZE, +	alloc->buffer_size = min_t(unsigned long, vma->vm_end - vma->vm_start, +				   SZ_4M); +	alloc->pages = kcalloc(alloc->buffer_size / PAGE_SIZE,  			       sizeof(alloc->pages[0]),  			       GFP_KERNEL);  	if (alloc->pages == NULL) { @@ -697,7 +700,6 @@ int binder_alloc_mmap_handler(struct binder_alloc *alloc,  		failure_string = "alloc page array";  		goto err_alloc_pages_failed;  	} -	alloc->buffer_size = vma->vm_end - vma->vm_start;  	buffer = kzalloc(sizeof(*buffer), GFP_KERNEL);  	if (!buffer) {  | 
