diff options
| author | Johannes Weiner <hannes@cmpxchg.org> | 2012-05-29 18:06:35 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-29 19:22:22 -0400 |
| commit | 2c478eae96501163c5c5d5f682bba4d34a7ea1d4 (patch) | |
| tree | 0c42430aa1b4209df62b34662343f32febf2cd36 | |
| parent | 421456edd27cf512b8f0025245a0f3572bd69b00 (diff) | |
mm: nobootmem: panic on node-specific allocation failure
__alloc_bootmem_node and __alloc_bootmem_low_node documentation claims
the functions panic on allocation failure. Do it.
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Yinghai Lu <yinghai@kernel.org>
Acked-by: Tejun Heo <tj@kernel.org>
Acked-by: David S. Miller <davem@davemloft.net>
Cc: Gavin Shan <shangw@linux.vnet.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
| -rw-r--r-- | mm/nobootmem.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/mm/nobootmem.c b/mm/nobootmem.c index 1983fb1c7026..cca76207e61a 100644 --- a/mm/nobootmem.c +++ b/mm/nobootmem.c | |||
| @@ -305,11 +305,17 @@ again: | |||
| 305 | 305 | ||
| 306 | ptr = __alloc_memory_core_early(MAX_NUMNODES, size, align, | 306 | ptr = __alloc_memory_core_early(MAX_NUMNODES, size, align, |
| 307 | goal, -1ULL); | 307 | goal, -1ULL); |
| 308 | if (!ptr && goal) { | 308 | if (ptr) |
| 309 | return ptr; | ||
| 310 | |||
| 311 | if (goal) { | ||
| 309 | goal = 0; | 312 | goal = 0; |
| 310 | goto again; | 313 | goto again; |
| 311 | } | 314 | } |
| 312 | return ptr; | 315 | |
| 316 | printk(KERN_ALERT "bootmem alloc of %lu bytes failed!\n", size); | ||
| 317 | panic("Out of memory"); | ||
| 318 | return NULL; | ||
| 313 | } | 319 | } |
| 314 | 320 | ||
| 315 | void * __init __alloc_bootmem_node_high(pg_data_t *pgdat, unsigned long size, | 321 | void * __init __alloc_bootmem_node_high(pg_data_t *pgdat, unsigned long size, |
| @@ -407,6 +413,12 @@ void * __init __alloc_bootmem_low_node(pg_data_t *pgdat, unsigned long size, | |||
| 407 | if (ptr) | 413 | if (ptr) |
| 408 | return ptr; | 414 | return ptr; |
| 409 | 415 | ||
| 410 | return __alloc_memory_core_early(MAX_NUMNODES, size, align, | 416 | ptr = __alloc_memory_core_early(MAX_NUMNODES, size, align, |
| 411 | goal, ARCH_LOW_ADDRESS_LIMIT); | 417 | goal, ARCH_LOW_ADDRESS_LIMIT); |
| 418 | if (ptr) | ||
| 419 | return ptr; | ||
| 420 | |||
| 421 | printk(KERN_ALERT "bootmem alloc of %lu bytes failed!\n", size); | ||
| 422 | panic("Out of memory"); | ||
| 423 | return NULL; | ||
| 412 | } | 424 | } |
