On Thu, 2011-01-20 at 14:03 +0300, Sergei Shtylyov wrote:
> > diff --git a/arch/mips/kernel/ftrace.c b/arch/mips/kernel/ftrace.c
> > index bc91e4a..62775d7 100644
> > --- a/arch/mips/kernel/ftrace.c
> > +++ b/arch/mips/kernel/ftrace.c
> > @@ -304,7 +304,14 @@ void prepare_ftrace_return(unsigned long
> > *parent_ra_addr, unsigned long self_ra,
> > return;
> > }
> > - trace.func = self_ra;
> > + /*
> > + * Get the recorded ip of the current mcount calling site in the
> > + * __mcount_loc section, which will be used to filter the function
> > + * entries configured through the tracing/set_graph_function interface.
> > + */
> > +
> > + insns = (in_kernel_space(self_ra)) ? 2 : (MCOUNT_OFFSET_INSNS + 1);
> Unneeded parens.
> > + trace.func = self_ra - (MCOUNT_INSN_SIZE * insns);
> Here too.
I like the parens here. Yes, it is basic math precedence, but it stands
out to a reviewer who has their brain more focused on correct code than
thinking about which op has precedence.
Reviewing code that has:
trace.func = self_ra - MCOUNT_INSN_SIZE * insns;
And as I my mother language reads left to right, my thought process
goes: subtract MCOUNT_INSN_SIZE from self_ra and then times insns... oh
wait, times goes first; stop reset, restart... subtract MCOUNT_INSN_SIZE
times insns from self_ra. That stop reset and restart of the thought
process breaks the train of thought and could waste a lot more time than
just the moment it happened. All this is avoided by the parenthesis that
automatically trigger the brain to think those go first.
I say, leave these in.