[SLAB] __builtin_return_address use without FRAME_POINTER causesboot failure

From: Christoph Lameter
Date: Mon Aug 08 2005 - 15:58:22 EST


I kept getting boot failures in the slab allocator. The failure goes
away if one is setting CONFIG_FRAME_POINTER. Seems that
CONFIG_DEBUG_SLAB implies the use of __buildin_return_address() which
needs the framepointer.

Crash with 2.6.15-rc3-mm1:

Unable to handle kernel NULL pointer dereference at virtual address 00000004
printing eip:
c013bebf
*pde = 00000000
Oops: 0000 [#1]
last sysfs file:
Modules linked in:
CPU: 0
EIP: 0060:[<c013bebf>] Not tainted VLI
EFLAGS: 00010292 (2.6.13-rc5-mm1)
EIP is at kmem_cache_alloc+0x16f/0x1c0
eax: 00000000 ebx: 00000000 ecx: 00000000 edx: c17de13c
esi: c17df080 edi: c17de13c ebp: c0377f6c esp: c0377f48
ds: 007b es: 007b ss: 0068
Process swapper (pid: 0, threadinfo=c0376000 task=c0329b80)
Stack: c0377f7c 00000004 fffffffc 0000001c c013af6e 800000d0 0000002e 00000000
c17df15c c17df140 c013af6e 00052c00 c0377f98 c17df15c 00000025 ffffffff
fffffffc 00000004 00000054 c02e5551 00000014 ffffffc0 0000001c 00000040
Call Trace:
[<c013af6e>] kmem_cache_create+0x59e/0x7b0
[<c013af6e>] kmem_cache_create+0x59e/0x7b0
[<c03826d1>] kmem_cache_init+0x1d1/0x380
[<c03786dd>] start_kernel+0xcd/0x150
[<c0378340>] unknown_bootoption+0x0/0x1a0
Code: 5a 75 8b eb ca 89 fa 89 f0 e8 8e e0 ff ff 8b 55 ec 89 10 89 fa 8b 45 00 8b 58 04 89 f0 e8 5a e0 ff ff 89 fa 89 18 8b 45 00 8b 00 <8b> 58 04 89 f0 e8 27 e0 ff ff 89 18 8b 46 18 e9 d7 fe ff ff 89
<0>Kernel panic - not syncing: Attempted to kill the idle task!


Signed-off-by: Christoph Lameter <christoph@xxxxxxxxxxx>

Index: linux-2.6.13-rc5-mm1/lib/Kconfig.debug
===================================================================
--- linux-2.6.13-rc5-mm1.orig/lib/Kconfig.debug 2005-08-08 11:02:36.000000000 -0700
+++ linux-2.6.13-rc5-mm1/lib/Kconfig.debug 2005-08-08 13:43:17.000000000 -0700
@@ -79,7 +79,7 @@

config DEBUG_SLAB
bool "Debug memory allocations"
- depends on DEBUG_KERNEL
+ depends on DEBUG_KERNEL && FRAME_POINTER
help
Say Y here to have the kernel do limited verification on memory
allocation as well as poisoning memory on free to catch use of freed
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/