diff options
Diffstat (limited to 'mm')
| -rw-r--r-- | mm/compaction.c | 7 | 
1 files changed, 4 insertions, 3 deletions
diff --git a/mm/compaction.c b/mm/compaction.c index ce08b39d85d4..672d3c78c6ab 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -270,14 +270,15 @@ __reset_isolation_pfn(struct zone *zone, unsigned long pfn, bool check_source,  	/* Ensure the start of the pageblock or zone is online and valid */  	block_pfn = pageblock_start_pfn(pfn); -	block_page = pfn_to_online_page(max(block_pfn, zone->zone_start_pfn)); +	block_pfn = max(block_pfn, zone->zone_start_pfn); +	block_page = pfn_to_online_page(block_pfn);  	if (block_page) {  		page = block_page;  		pfn = block_pfn;  	}  	/* Ensure the end of the pageblock or zone is online and valid */ -	block_pfn += pageblock_nr_pages; +	block_pfn = pageblock_end_pfn(pfn) - 1;  	block_pfn = min(block_pfn, zone_end_pfn(zone) - 1);  	end_page = pfn_to_online_page(block_pfn);  	if (!end_page) @@ -303,7 +304,7 @@ __reset_isolation_pfn(struct zone *zone, unsigned long pfn, bool check_source,  		page += (1 << PAGE_ALLOC_COSTLY_ORDER);  		pfn += (1 << PAGE_ALLOC_COSTLY_ORDER); -	} while (page < end_page); +	} while (page <= end_page);  	return false;  }  | 
