X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=mm%2Fcompaction.c;h=d9ebebe1a2aaaea69074fe3615faeddd41a4feb7;hb=828006de1bddf83b6ecf03ec459c15f7c7c22db7;hp=bd939a574b841d51d704af6a70a5ba7e37dc4e71;hpb=e862f2e4693f287669e84971c778bf071bd0526b;p=~andy%2Flinux diff --git a/mm/compaction.c b/mm/compaction.c index bd939a574b8..d9ebebe1a2a 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -330,8 +330,17 @@ static isolate_migrate_t isolate_migratepages(struct zone *zone, continue; nr_scanned++; - /* Get the page and skip if free */ + /* + * Get the page and ensure the page is within the same zone. + * See the comment in isolate_freepages about overlapping + * nodes. It is deliberate that the new zone lock is not taken + * as memory compaction should not move pages between nodes. + */ page = pfn_to_page(low_pfn); + if (page_zone(page) != zone) + continue; + + /* Skip if free */ if (PageBuddy(page)) continue;