sh: Fix dynamic ftrace's NOP action.
authorMatt Fleming <matt@console-pimps.org>
Wed, 10 Jun 2009 21:07:53 +0000 (22:07 +0100)
committerMatt Fleming <matt@console-pimps.org>
Thu, 11 Jun 2009 18:00:58 +0000 (19:00 +0100)
commit9e28c46b7dd116a607ffb054c5545c468c77d779
tree348ea5654f1eb17ecd8b0e3256615e96fb3c6dc9
parent7780b6a2990e2fbb697bb900e01ca7361943c7da
sh: Fix dynamic ftrace's NOP action.

Ftrace on sh handles nop'ing out trace function calls differently than
other architectures. Instead of inserting NOP instructions in place of
the call to the function tracer we branch over the call instructions
and continue executing the main body of the function.

This patch fixes a bug in the implementation of ftrace_modify_code()
where we check that the old value of the code we're about to replace
is an expected one. In the ftrace_make_call() code path
ftrace_modify_code() was comparing the old instruction value with NOP
instructions. The compare was failing because we never actually insert
NOP instructions. It makes sense to just get rid of the NOP
instructions in ftrace_nop and compare the old code with the address
of the function body if we're expecting ftrace to have nop'd out the
function trace call.

Signed-off-by: Matt Fleming <matt@console-pimps.org>
arch/sh/kernel/ftrace.c