aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Krafft <krafft@de.ibm.com>2006-12-06 23:32:41 -0500
committerLinus Torvalds <torvalds@woody.osdl.org>2006-12-07 11:39:22 -0500
commit7c309a64d6afa90a0a07813c836ba480aeaeca8c (patch)
treea56b235fa35c2e528752071df2a6e21a25a4e8f6
parenta120586873d3d64de93bd6d593d237e131994e58 (diff)
[PATCH] enable booting a NUMA system where some nodes have no memory
When booting a NUMA system with nodes that have no memory (eg by limiting memory), bootmem_alloc_core tried to find pages in an uninitialized bootmem_map. This caused a null pointer access. This fix adds a check, so that NULL is returned. That will enable the caller (bootmem_alloc_nopanic) to alloc memory on other without a panic. Signed-off-by: Christian Krafft <krafft@de.ibm.com> Cc: Christoph Lameter <clameter@engr.sgi.com> Cc: Andy Whitcroft <apw@shadowen.org> Cc: Martin Bligh <mbligh@google.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--mm/bootmem.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/mm/bootmem.c b/mm/bootmem.c
index d53112fcb404..94253428f091 100644
--- a/mm/bootmem.c
+++ b/mm/bootmem.c
@@ -196,6 +196,10 @@ __alloc_bootmem_core(struct bootmem_data *bdata, unsigned long size,
196 if (limit && bdata->node_boot_start >= limit) 196 if (limit && bdata->node_boot_start >= limit)
197 return NULL; 197 return NULL;
198 198
199 /* on nodes without memory - bootmem_map is NULL */
200 if (!bdata->node_bootmem_map)
201 return NULL;
202
199 end_pfn = bdata->node_low_pfn; 203 end_pfn = bdata->node_low_pfn;
200 limit = PFN_DOWN(limit); 204 limit = PFN_DOWN(limit);
201 if (limit && end_pfn > limit) 205 if (limit && end_pfn > limit)