diff options
| author | Ingo Molnar <mingo@elte.hu> | 2008-09-10 14:05:45 +0200 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-09-10 14:05:45 +0200 | 
| commit | 3ce9bcb583536c45a46c7302747029450e22279c (patch) | |
| tree | 7a4167189ffc6dc909151d1a5d040f9f0656a9f4 /mm/page_alloc.c | |
| parent | 26fd10517e810dd59ea050b052de24a75ee6dc07 (diff) | |
| parent | f7d0b926ac8c8ec0c7a83ee69409bd2e6bb39f81 (diff) | |
Merge branch 'core/xen' into x86/xen
Diffstat (limited to 'mm/page_alloc.c')
| -rw-r--r-- | mm/page_alloc.c | 9 | 
1 files changed, 8 insertions, 1 deletions
| diff --git a/mm/page_alloc.c b/mm/page_alloc.c index af982f7cdb2a..e293c58bea58 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -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; @@ -4064,7 +4071,7 @@ void __init set_dma_reserve(unsigned long new_dma_reserve)  }  #ifndef CONFIG_NEED_MULTIPLE_NODES -struct pglist_data contig_page_data = { .bdata = &bootmem_node_data[0] }; +struct pglist_data __refdata contig_page_data = { .bdata = &bootmem_node_data[0] };  EXPORT_SYMBOL(contig_page_data);  #endif | 
