Re: [PATCH] Delete meaningless check of current_order in __rmqueue_fallback

From: Masanori YOSHIDA
Date: Sat Jun 25 2016 - 04:21:44 EST


On Mon, Jun 20, 2016 at 11:35 PM, Michal Hocko <mhocko@xxxxxxxxxx> wrote:
> On Mon 13-06-16 03:03:31, YOSHIDA Masanori wrote:
>> From: YOSHIDA Masanori <masanori.yoshida@xxxxxxxxx>
>>
>> Signed-off-by: YOSHIDA Masanori <masanori.yoshida@xxxxxxxxx>
>> ---
>> mm/page_alloc.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
>> index 6903b69..db02967 100644
>> --- a/mm/page_alloc.c
>> +++ b/mm/page_alloc.c
>> @@ -2105,7 +2105,7 @@ __rmqueue_fallback(struct zone *zone, unsigned int order, int start_migratetype)
>>
>> /* Find the largest possible block of pages in the other list */
>> for (current_order = MAX_ORDER-1;
>> - current_order >= order && current_order <= MAX_ORDER-1;
>> + current_order >= order;
>> --current_order) {
>> area = &(zone->free_area[current_order]);
>> fallback_mt = find_suitable_fallback(area, current_order,
>
> This is incorrect. Guess what happens if the given order is 0. Hint,
> current_order is unsigned int.

I see. Thank you for replying.
And I should have noticed this before submission by using git-blame. Excuse me.

> --
> Michal Hocko
> SUSE Labs