> Simplify page_is_buddy() to reduce the redundant code for better code > readability. > > Signed-off-by: chenqiwu > --- > changes in v4: > - change the return type of page_is_buddy() from int to bool. > - reflow the comment into fewer lines. > --- > mm/page_alloc.c | 33 +++++++++++++-------------------- > 1 file changed, 13 insertions(+), 20 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 3c4eb75..229fc8c 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -791,32 +791,25 @@ static inline void set_page_order(struct page *page, > unsigned int order) > * > * For recording page's order, we use page_private(page). > */ > -static inline int page_is_buddy(struct page *page, struct page *buddy, > +static inline bool page_is_buddy(struct page *page, struct page *buddy, > unsigned int order) > { > - if (page_is_guard(buddy) && page_order(buddy) == order) { > - if (page_zone_id(page) != page_zone_id(buddy)) > - return 0; > - > - VM_BUG_ON_PAGE(page_count(buddy) != 0, buddy); > + if (!page_is_guard(buddy) && !PageBuddy(buddy)) > + return false; > > - return 1; > - } > + if (page_order(buddy) != order) > + return false; > > - if (PageBuddy(buddy) && page_order(buddy) == order) { > - /* > - * zone check is done late to avoid uselessly > - * calculating zone/node ids for pages that could > - * never merge. > - */ > - if (page_zone_id(page) != page_zone_id(buddy)) > - return 0; > + /* > + * zone check is done late to avoid uselessly calculating > + * zone/node ids for pages that could never merge. > + */ > + if (page_zone_id(page) != page_zone_id(buddy)) > + return false; > > - VM_BUG_ON_PAGE(page_count(buddy) != 0, buddy); > + VM_BUG_ON_PAGE(page_count(buddy) != 0, buddy); > > - return 1; > - } > - return 0; > + return true; > } > > #ifdef CONFIG_COMPACTION > -- > Acked-by: Pankaj Gupta > 1.9.1 > >