aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/mm/lmb.c
diff options
context:
space:
mode:
authorMichael Ellerman <michael@ellerman.id.au>2006-01-25 03:31:28 -0500
committerPaul Mackerras <paulus@samba.org>2006-02-07 06:38:34 -0500
commitd7a5b2ffa1352f0310630934a56aecbdfb617b72 (patch)
tree5ec2ed1d4e63d4bd2847531115fd263109a16830 /arch/powerpc/mm/lmb.c
parent2fb07d776b3c4473275eb225b6bf2a83755c9bfe (diff)
[PATCH] powerpc: Always panic if lmb_alloc() fails
Currently most callers of lmb_alloc() don't check if it worked or not, if it ever does weird bad things will probably happen. The few callers who do check just panic or BUG_ON. So make lmb_alloc() panic internally, to catch bugs at the source. The few callers who did check the result no longer need to. The only caller that did anything interesting with the return result was careful_allocation(). For it we create __lmb_alloc_base() which _doesn't_ panic automatically, a little messy, but passable. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/mm/lmb.c')
-rw-r--r--arch/powerpc/mm/lmb.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/powerpc/mm/lmb.c b/arch/powerpc/mm/lmb.c
index bbe3eac918e8..d9c76ce5fa8f 100644
--- a/arch/powerpc/mm/lmb.c
+++ b/arch/powerpc/mm/lmb.c
@@ -226,6 +226,20 @@ unsigned long __init lmb_alloc(unsigned long size, unsigned long align)
226unsigned long __init lmb_alloc_base(unsigned long size, unsigned long align, 226unsigned long __init lmb_alloc_base(unsigned long size, unsigned long align,
227 unsigned long max_addr) 227 unsigned long max_addr)
228{ 228{
229 unsigned long alloc;
230
231 alloc = __lmb_alloc_base(size, align, max_addr);
232
233 if (alloc < 0)
234 panic("ERROR: Failed to allocate 0x%lx bytes below 0x%lx.\n",
235 size, max_addr);
236
237 return alloc;
238}
239
240unsigned long __init __lmb_alloc_base(unsigned long size, unsigned long align,
241 unsigned long max_addr)
242{
229 long i, j; 243 long i, j;
230 unsigned long base = 0; 244 unsigned long base = 0;
231 245