arm64: ftrace: modify a stack frame in a safe way
authorAKASHI Takahiro <takahiro.akashi@linaro.org>
Tue, 15 Dec 2015 08:33:39 +0000 (17:33 +0900)
committerWill Deacon <will.deacon@arm.com>
Mon, 21 Dec 2015 17:26:01 +0000 (17:26 +0000)
commit79fdee9b6355c9720f14717e1ad66af51bb331b5
tree4f446880f2605c53237ae87d31e6bfcda8b41677
parentd224a69e3d80fe08f285d1f41d21b590bae4fa9f
arm64: ftrace: modify a stack frame in a safe way

Function graph tracer modifies a return address (LR) in a stack frame by
calling ftrace_prepare_return() in a traced function's function prologue.
The current code does this modification before preserving an original
address at ftrace_push_return_trace() and there is always a small window
of inconsistency when an interrupt occurs.

This doesn't matter, as far as an interrupt stack is introduced, because
stack tracer won't be invoked in an interrupt context. But it would be
better to proactively minimize such a window by moving the LR modification
after ftrace_push_return_trace().

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/kernel/ftrace.c