On Fri, 11 Oct 2013 09:21:56 +0200 Heiko Carstens <heiko.carst...@de.ibm.com> wrote:
> > Steven Rostedt noted that s390 is the only architecture which calls > ftrace_push_return_trace() before ftrace_graph_entry() and therefore has I don't know if s390 is the only arch. I didn't finish reading all the arch specific code to make sure. > the small advantage that trace.depth gets initialized automatically. > > However this small advantage isn't worth the difference and possible subtle > breakage that may result from this. > So change s390 to have the same function call order like all other > architectures: first ftrace_graph_entry(), then ftrace_push_return_trace() > > Reported-by: Steven Rostedt <rost...@goodmis.org> > Signed-off-by: Heiko Carstens <heiko.carst...@de.ibm.com> > --- > arch/s390/kernel/ftrace.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/arch/s390/kernel/ftrace.c b/arch/s390/kernel/ftrace.c > index 1014ad5..224db03 100644 > --- a/arch/s390/kernel/ftrace.c > +++ b/arch/s390/kernel/ftrace.c > @@ -151,14 +151,13 @@ unsigned long __kprobes prepare_ftrace_return(unsigned > long parent, > if (unlikely(atomic_read(¤t->tracing_graph_pause))) > goto out; > ip = (ip & PSW_ADDR_INSN) - MCOUNT_INSN_SIZE; > - if (ftrace_push_return_trace(parent, ip, &trace.depth, 0) == -EBUSY) > - goto out; > trace.func = ip; > + trace.depth = current->curr_ret_stack + 1; > /* Only trace if the calling function expects to. */ > - if (!ftrace_graph_entry(&trace)) { > - current->curr_ret_stack--; > + if (!ftrace_graph_entry(&trace)) > + goto out; > + if (ftrace_push_return_trace(parent, ip, &trace.depth, 0) == -EBUSY) > goto out; > - } Hmm, if this code is so identical among the archs, I may create a generic inline function to do the work. That way any change to the flow can be done for all archs in one place. Thanks! -- Steve > parent = (unsigned long) return_to_handler; > out: > return parent; -- 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/