Commit fe925c0c authored by chenqiwu's avatar chenqiwu Committed by Linus Torvalds
Browse files

mm/page_alloc: simplify page_is_buddy() for better code readability

parent 97ce86f9
Loading
Loading
Loading
Loading
+13 −20
Original line number Diff line number Diff line
@@ -792,32 +792,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.
	 * 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;
		return false;

	VM_BUG_ON_PAGE(page_count(buddy) != 0, buddy);

		return 1;
	}
	return 0;
	return true;
}

#ifdef CONFIG_COMPACTION