|
@@ -3001,16 +3001,18 @@ static void binder_deferred_release(struct binder_proc *proc)
|
|
|
int i;
|
|
|
|
|
|
for (i = 0; i < proc->buffer_size / PAGE_SIZE; i++) {
|
|
|
- if (proc->pages[i]) {
|
|
|
- void *page_addr = proc->buffer + i * PAGE_SIZE;
|
|
|
- binder_debug(BINDER_DEBUG_BUFFER_ALLOC,
|
|
|
- "binder_release: %d: page %d at %p not freed\n",
|
|
|
- proc->pid, i, page_addr);
|
|
|
- unmap_kernel_range((unsigned long)page_addr,
|
|
|
- PAGE_SIZE);
|
|
|
- __free_page(proc->pages[i]);
|
|
|
- page_count++;
|
|
|
- }
|
|
|
+ void *page_addr;
|
|
|
+
|
|
|
+ if (!proc->pages[i])
|
|
|
+ continue;
|
|
|
+
|
|
|
+ page_addr = proc->buffer + i * PAGE_SIZE;
|
|
|
+ binder_debug(BINDER_DEBUG_BUFFER_ALLOC,
|
|
|
+ "binder_release: %d: page %d at %p not freed\n",
|
|
|
+ proc->pid, i, page_addr);
|
|
|
+ unmap_kernel_range((unsigned long)page_addr, PAGE_SIZE);
|
|
|
+ __free_page(proc->pages[i]);
|
|
|
+ page_count++;
|
|
|
}
|
|
|
kfree(proc->pages);
|
|
|
vfree(proc->buffer);
|