Re: [PATCH] mm/page_alloc: simplify page_is_buddy() for better code readability

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Mar 8, 2020 at 12:10 AM <qiwuchen55@xxxxxxxxx> wrote:
>
> From: chenqiwu <chenqiwu@xxxxxxxxxx>
>
> Simplify page_is_buddy() to reduce the redundant code for better
> code readability.
>
> Signed-off-by: chenqiwu <chenqiwu@xxxxxxxxxx>
> ---
>  mm/page_alloc.c | 13 +++----------
>  1 file changed, 3 insertions(+), 10 deletions(-)
>
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 79e950d..c6eef38 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -797,16 +797,8 @@ static inline void set_page_order(struct page *page, unsigned int order)
>  static inline int 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);
> -
> -               return 1;
> -       }
> -
> -       if (PageBuddy(buddy) && page_order(buddy) == order) {
> +       if ((page_is_guard(buddy) || PageBuddy(buddy))
> +            && page_order(buddy) == order) {
>                 /*
>                  * zone check is done late to avoid uselessly
>                  * calculating zone/node ids for pages that could

Instead of keeping the if statement as is couldn't you flatten this
out further by just returning 0 if !page_is_guard && !PageBuddy?

So something like:
if (!page_is_guard(buddy) && !PageBuddy(buddy))
        return0;

if (page_order(buddy) != order)
        return 0;

I feel like this would be more readable than sorting out the
parenthesis for the conditional statement. Then you can also just get
rid of the indenting and braces for the rest of the statement. With
that it would more closely match the description above as well as you
are going through and checking a - d as separate tests.




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux