|
@@ -694,6 +694,9 @@ static int move_freepages(struct zone *zone,
|
|
|
#endif
|
|
|
|
|
|
for (page = start_page; page <= end_page;) {
|
|
|
+ /* Make sure we are not inadvertently changing nodes */
|
|
|
+ VM_BUG_ON(page_to_nid(page) != zone_to_nid(zone));
|
|
|
+
|
|
|
if (!pfn_valid_within(page_to_pfn(page))) {
|
|
|
page++;
|
|
|
continue;
|
|
@@ -2516,6 +2519,10 @@ static void setup_zone_migrate_reserve(struct zone *zone)
|
|
|
continue;
|
|
|
page = pfn_to_page(pfn);
|
|
|
|
|
|
+ /* Watch out for overlapping nodes */
|
|
|
+ if (page_to_nid(page) != zone_to_nid(zone))
|
|
|
+ continue;
|
|
|
+
|
|
|
/* Blocks with reserved pages will never free, skip them. */
|
|
|
if (PageReserved(page))
|
|
|
continue;
|