X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=mm%2Fpage_alloc.c;h=485be8976bbab333da9fe40835cf391a9a4c338b;hb=be8ad46e10b99411acae4f0461be547f32a08686;hp=2b8ba3aebf6e2c6b46b0d12dfea058ee3ab022fe;hpb=d021563888312018ca65681096f62e36c20e63cc;p=pandora-kernel.git diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 2b8ba3aebf6e..485be8976bba 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5608,6 +5608,17 @@ __count_immobile_pages(struct zone *zone, struct page *page, int count) bool is_pageblock_removable_nolock(struct page *page) { struct zone *zone = page_zone(page); + unsigned long pfn = page_to_pfn(page); + + /* + * We have to be careful here because we are iterating over memory + * sections which are not zone aware so we might end up outside of + * the zone but still within the section. + */ + if (!zone || zone->zone_start_pfn > pfn || + zone->zone_start_pfn + zone->spanned_pages <= pfn) + return false; + return __count_immobile_pages(zone, page, 0); }