diff --git a/drivers/android/binder.c b/drivers/android/binder.c index 52fa75875731..9e9d2475051a 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -738,8 +738,7 @@ static int __binder_update_page_range(struct binder_proc *proc, int allocate, return 0; free_range: - for (page_addr = end - PAGE_SIZE; page_addr >= start; - page_addr -= PAGE_SIZE) { + for (page_addr = end - PAGE_SIZE; 1; page_addr -= PAGE_SIZE) { page = &proc->pages[(page_addr - proc->buffer) / PAGE_SIZE]; if (vma) zap_page_range(vma, (uintptr_t)page_addr + @@ -750,7 +749,8 @@ err_map_kernel_failed: __free_page(*page); *page = NULL; err_alloc_page_failed: - ; + if (page_addr == start) + break; } err_no_vma: if (mm) {