Skip to content

Commit f07b83a

Browse files
Carlos Llamasgregkh
authored andcommitted
binder: refactor binder_delete_free_buffer()
Skip the freelist call immediately as needed, instead of continuing the pointless checks. Also, drop the debug logs that we don't really need. Signed-off-by: Carlos Llamas <[email protected]> Reviewed-by: Alice Ryhl <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 8e90521 commit f07b83a

File tree

1 file changed

+11
-33
lines changed

1 file changed

+11
-33
lines changed

drivers/android/binder_alloc.c

Lines changed: 11 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -636,48 +636,26 @@ static unsigned long prev_buffer_end_page(struct binder_buffer *buffer)
636636
static void binder_delete_free_buffer(struct binder_alloc *alloc,
637637
struct binder_buffer *buffer)
638638
{
639-
struct binder_buffer *prev, *next = NULL;
640-
bool to_free = true;
639+
struct binder_buffer *prev, *next;
640+
641+
if (PAGE_ALIGNED(buffer->user_data))
642+
goto skip_freelist;
641643

642644
BUG_ON(alloc->buffers.next == &buffer->entry);
643645
prev = binder_buffer_prev(buffer);
644646
BUG_ON(!prev->free);
645-
if (prev_buffer_end_page(prev) == buffer_start_page(buffer)) {
646-
to_free = false;
647-
binder_alloc_debug(BINDER_DEBUG_BUFFER_ALLOC,
648-
"%d: merge free, buffer %lx share page with %lx\n",
649-
alloc->pid, buffer->user_data,
650-
prev->user_data);
651-
}
647+
if (prev_buffer_end_page(prev) == buffer_start_page(buffer))
648+
goto skip_freelist;
652649

653650
if (!list_is_last(&buffer->entry, &alloc->buffers)) {
654651
next = binder_buffer_next(buffer);
655-
if (buffer_start_page(next) == buffer_start_page(buffer)) {
656-
to_free = false;
657-
binder_alloc_debug(BINDER_DEBUG_BUFFER_ALLOC,
658-
"%d: merge free, buffer %lx share page with %lx\n",
659-
alloc->pid,
660-
buffer->user_data,
661-
next->user_data);
662-
}
652+
if (buffer_start_page(next) == buffer_start_page(buffer))
653+
goto skip_freelist;
663654
}
664655

665-
if (PAGE_ALIGNED(buffer->user_data)) {
666-
binder_alloc_debug(BINDER_DEBUG_BUFFER_ALLOC,
667-
"%d: merge free, buffer start %lx is page aligned\n",
668-
alloc->pid, buffer->user_data);
669-
to_free = false;
670-
}
671-
672-
if (to_free) {
673-
binder_alloc_debug(BINDER_DEBUG_BUFFER_ALLOC,
674-
"%d: merge free, buffer %lx do not share page with %lx or %lx\n",
675-
alloc->pid, buffer->user_data,
676-
prev->user_data,
677-
next ? next->user_data : 0);
678-
binder_lru_freelist_add(alloc, buffer_start_page(buffer),
679-
buffer_start_page(buffer) + PAGE_SIZE);
680-
}
656+
binder_lru_freelist_add(alloc, buffer_start_page(buffer),
657+
buffer_start_page(buffer) + PAGE_SIZE);
658+
skip_freelist:
681659
list_del(&buffer->entry);
682660
kfree(buffer);
683661
}

0 commit comments

Comments
 (0)