diff options
| author | Bernhard Walle <bwalle@suse.de> | 2008-06-21 13:01:02 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-06-21 14:25:10 -0400 |
| commit | 71c2742f5e6348d76ee62085cf0a13e5eff0f00e (patch) | |
| tree | 44020f575319903e3ef18665baec360b6ea1c98d | |
| parent | a19214430d27a3af6f1672ec26f3c893ef899ede (diff) | |
Add return value to reserve_bootmem_node()
This patch changes the function reserve_bootmem_node() from void to int,
returning -ENOMEM if the allocation fails.
This fixes a build problem on x86 with CONFIG_KEXEC=y and
CONFIG_NEED_MULTIPLE_NODES=y
Signed-off-by: Bernhard Walle <bwalle@suse.de>
Reported-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
| -rw-r--r-- | include/linux/bootmem.h | 2 | ||||
| -rw-r--r-- | mm/bootmem.c | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h index 6a5dbdc8a7dc..686895bacd9d 100644 --- a/include/linux/bootmem.h +++ b/include/linux/bootmem.h | |||
| @@ -94,7 +94,7 @@ extern unsigned long init_bootmem_node(pg_data_t *pgdat, | |||
| 94 | unsigned long freepfn, | 94 | unsigned long freepfn, |
| 95 | unsigned long startpfn, | 95 | unsigned long startpfn, |
| 96 | unsigned long endpfn); | 96 | unsigned long endpfn); |
| 97 | extern void reserve_bootmem_node(pg_data_t *pgdat, | 97 | extern int reserve_bootmem_node(pg_data_t *pgdat, |
| 98 | unsigned long physaddr, | 98 | unsigned long physaddr, |
| 99 | unsigned long size, | 99 | unsigned long size, |
| 100 | int flags); | 100 | int flags); |
diff --git a/mm/bootmem.c b/mm/bootmem.c index e8fb927392b9..8d9f60e06f62 100644 --- a/mm/bootmem.c +++ b/mm/bootmem.c | |||
| @@ -442,15 +442,17 @@ unsigned long __init init_bootmem_node(pg_data_t *pgdat, unsigned long freepfn, | |||
| 442 | return init_bootmem_core(pgdat, freepfn, startpfn, endpfn); | 442 | return init_bootmem_core(pgdat, freepfn, startpfn, endpfn); |
| 443 | } | 443 | } |
| 444 | 444 | ||
| 445 | void __init reserve_bootmem_node(pg_data_t *pgdat, unsigned long physaddr, | 445 | int __init reserve_bootmem_node(pg_data_t *pgdat, unsigned long physaddr, |
| 446 | unsigned long size, int flags) | 446 | unsigned long size, int flags) |
| 447 | { | 447 | { |
| 448 | int ret; | 448 | int ret; |
| 449 | 449 | ||
| 450 | ret = can_reserve_bootmem_core(pgdat->bdata, physaddr, size, flags); | 450 | ret = can_reserve_bootmem_core(pgdat->bdata, physaddr, size, flags); |
| 451 | if (ret < 0) | 451 | if (ret < 0) |
| 452 | return; | 452 | return -ENOMEM; |
| 453 | reserve_bootmem_core(pgdat->bdata, physaddr, size, flags); | 453 | reserve_bootmem_core(pgdat->bdata, physaddr, size, flags); |
| 454 | |||
| 455 | return 0; | ||
| 454 | } | 456 | } |
| 455 | 457 | ||
| 456 | void __init free_bootmem_node(pg_data_t *pgdat, unsigned long physaddr, | 458 | void __init free_bootmem_node(pg_data_t *pgdat, unsigned long physaddr, |
