diff options
author | Paul Mackerras <paulus@samba.org> | 2006-05-05 15:45:48 +1000 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-05-05 15:45:48 +1000 |
commit | f18fc729cd2d67b76e24206ee3567c1f6983c358 (patch) | |
tree | 9dbf177222d94213d9dd82d67de6d905e1a2b278 /mm/sparse.c | |
parent | 5a43ee65620d628ba04deecf241b63b2410b97f2 (diff) | |
parent | d98550e334715b2d9e45f8f0f4e1608720108640 (diff) | |
download | kernel-crypto-f18fc729cd2d67b76e24206ee3567c1f6983c358.tar.gz kernel-crypto-f18fc729cd2d67b76e24206ee3567c1f6983c358.tar.xz kernel-crypto-f18fc729cd2d67b76e24206ee3567c1f6983c358.zip |
Merge ../linux-2.6
Diffstat (limited to 'mm/sparse.c')
-rw-r--r-- | mm/sparse.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/mm/sparse.c b/mm/sparse.c index 0a51f36ba3a..d7c32de99ee 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -32,7 +32,10 @@ static struct mem_section *sparse_index_alloc(int nid) unsigned long array_size = SECTIONS_PER_ROOT * sizeof(struct mem_section); - section = alloc_bootmem_node(NODE_DATA(nid), array_size); + if (system_state == SYSTEM_RUNNING) + section = kmalloc_node(array_size, GFP_KERNEL, nid); + else + section = alloc_bootmem_node(NODE_DATA(nid), array_size); if (section) memset(section, 0, array_size); @@ -281,9 +284,9 @@ int sparse_add_one_section(struct zone *zone, unsigned long start_pfn, ret = sparse_init_one_section(ms, section_nr, memmap); - if (ret <= 0) - __kfree_section_memmap(memmap, nr_pages); out: pgdat_resize_unlock(pgdat, &flags); + if (ret <= 0) + __kfree_section_memmap(memmap, nr_pages); return ret; } |