@@ -636,48 +636,26 @@ static unsigned long prev_buffer_end_page(struct binder_buffer *buffer)
636
636
static void binder_delete_free_buffer (struct binder_alloc * alloc ,
637
637
struct binder_buffer * buffer )
638
638
{
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 ;
641
643
642
644
BUG_ON (alloc -> buffers .next == & buffer -> entry );
643
645
prev = binder_buffer_prev (buffer );
644
646
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 ;
652
649
653
650
if (!list_is_last (& buffer -> entry , & alloc -> buffers )) {
654
651
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 ;
663
654
}
664
655
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 :
681
659
list_del (& buffer -> entry );
682
660
kfree (buffer );
683
661
}
0 commit comments