diff --git a/arch/x86/kernel/traps_32.c b/arch/x86/kernel/traps_32.c index 83df0f37ba75dc3e2f7989645dc2e5dc85b54b96..acc9af260facc598ae0dcaf833431503a93d815f 100644 --- a/arch/x86/kernel/traps_32.c +++ b/arch/x86/kernel/traps_32.c @@ -125,7 +125,8 @@ static inline unsigned long print_context_stack(struct thread_info *tinfo, unsigned long addr; addr = frame->return_address; - ops->address(data, addr); + if (__kernel_text_address(addr)) + ops->address(data, addr); /* * break out of recursive entries (such as * end_of_stack_stop_unwind_function). Also, @@ -133,6 +134,7 @@ static inline unsigned long print_context_stack(struct thread_info *tinfo, * move downwards! */ next = frame->next_frame; + bp = (unsigned long) next; if (next <= frame) break; frame = next;