x86/dumpstack: Add get_stack_info() interface
valid_stack_ptr() is buggy: it assumes that all stacks are of size THREAD_SIZE, which is not true for exception stacks. So the walk_stack() callbacks will need to know the location of the beginning of the stack as well as the end. Another issue is that in general the various features of a stack (type, size, next stack pointer, description string) are scattered around in various places throughout the stack dump code. Encapsulate all that information in a single place with a new stack_info struct and a get_stack_info() interface. Signed-off-by:Josh Poimboeuf <jpoimboe@redhat.com> Cc: Andy Lutomirski <luto@amacapital.net> Cc: Andy Lutomirski <luto@kernel.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Brian Gerst <brgerst@gmail.com> Cc: Byungchul Park <byungchul.park@lge.com> Cc: Denys Vlasenko <dvlasenk@redhat.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Kees Cook <keescook@chromium.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Nilay Vaish <nilayvaish@gmail.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/8164dd0db96b7e6a279fa17ae5e6dc375eecb4a9.1473905218.git.jpoimboe@redhat.com Signed-off-by:
Ingo Molnar <mingo@kernel.org>
Showing
- arch/x86/events/core.c 1 addition, 1 deletionarch/x86/events/core.c
- arch/x86/include/asm/stacktrace.h 37 additions, 4 deletionsarch/x86/include/asm/stacktrace.h
- arch/x86/kernel/dumpstack.c 22 additions, 18 deletionsarch/x86/kernel/dumpstack.c
- arch/x86/kernel/dumpstack_32.c 81 additions, 25 deletionsarch/x86/kernel/dumpstack_32.c
- arch/x86/kernel/dumpstack_64.c 91 additions, 78 deletionsarch/x86/kernel/dumpstack_64.c
- arch/x86/kernel/stacktrace.c 1 addition, 1 deletionarch/x86/kernel/stacktrace.c
- arch/x86/oprofile/backtrace.c 1 addition, 1 deletionarch/x86/oprofile/backtrace.c
Please register or sign in to comment