• Will Deacon's avatar
    arm64: ftrace: Ensure module ftrace trampoline is coherent with I-side · b6143d10
    Will Deacon authored
    The initial support for dynamic ftrace trampolines in modules made use
    of an indirect branch which loaded its target from the beginning of
    a special section (e71a4e1b ("arm64: ftrace: add support for far
    branches to dynamic ftrace")). Since no instructions were being patched,
    no cache maintenance was needed. However, later in be0f272b ("arm64:
    ftrace: emit ftrace-mod.o contents through code") this code was reworked
    to output the trampoline instructions directly into the PLT entry but,
    unfortunately, the necessary cache maintenance was overlooked.
    
    Add a call to __flush_icache_range() after writing the new trampoline
    instructions but before patching in the branch to the trampoline.
    
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: James Morse <james.morse@arm.com>
    Cc: <stable@vger.kernel.org>
    Fixes: be0f272b ("arm64: ftrace: emit ftrace-mod.o contents through code")
    Signed-off-by: default avatarWill Deacon <will@kernel.org>
    Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    b6143d10
ftrace.c 7.24 KB