Hi Steve, On Tue, 18 Nov 2014 22:33:33 -0500, Steven Rostedt wrote: > From: "Steven Rostedt (Red Hat)" <rost...@goodmis.org> > > Stack traces that happen from function tracing check if the address > on the stack is a __kernel_text_address(). That is, is the address > kernel code. This calls core_kernel_text() which returns true > if the address is part of the builtin kernel code. It also calls > is_module_text_address() which returns true if the address belongs > to module code. > > But what is missing is ftrace dynamically allocated trampolines. > These trampolines are allocated for individual ftrace_ops that > call the ftrace_ops callback functions directly. But if they do a > stack trace, the code checking the stack wont detect them as they > are neither core kernel code nor module address space. > > Adding another field to ftrace_ops that also stores the size of > the trampoline assigned to it we can create a new function called > is_ftrace_trampoline() that returns true if the address is a > dynamically allocate ftrace trampoline. Note, it ignores trampolines > that are not dynamically allocated as they will return true with > the core_kernel_text() function. > > Cc: Thomas Gleixner <t...@linutronix.de> > Cc: Ingo Molnar <mi...@redhat.com> > Cc: "H. Peter Anvin" <h...@zytor.com> > Signed-off-by: Steven Rostedt <rost...@goodmis.org>
[SNIP] > @@ -102,6 +103,8 @@ int __kernel_text_address(unsigned long addr) > return 1; > if (is_module_text_address(addr)) > return 1; > + if (is_ftrace_trampoline(addr)) > + return 1; What about kernel_text_address()? It seems some archs like ARM use it instead of __kernel_text_address() although trampoline is only enabled on x86 for now. Thanks, Namhyung -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/