ARM: ftrace: use ADD not POP to counter PUSH at entry
authorArd Biesheuvel <ardb@kernel.org>
Wed, 8 Dec 2021 07:42:03 +0000 (08:42 +0100)
committerArd Biesheuvel <ardb@kernel.org>
Wed, 9 Feb 2022 08:12:32 +0000 (09:12 +0100)
commitad1c2f39fda0acb51b5a93604c5e1a703b849a7d
tree47f173a82e141c35d4afee2953ccc29497bec46f
parentdd88b03ff0c84f4bcbe1419b93a4bed429fed3be
ARM: ftrace: use ADD not POP to counter PUSH at entry

The compiler emitted hook used for ftrace consists of a PUSH {LR} to
preserve the link register, followed by a branch-and-link (BL) to
__gnu_mount_nc. Dynamic ftrace patches away the latter to turn the
combined sequence into a NOP, using a POP {LR} instruction.

This is not necessary, since the link register does not get clobbered in
this case, and simply adding #4 to the stack pointer is sufficient, and
avoids a memory access that may take a few cycles to resolve depending
on the micro-architecture.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
arch/arm/kernel/entry-ftrace.S
arch/arm/kernel/ftrace.c