• W
    arm64: ftrace: Ensure module ftrace trampoline is coherent with I-side · 30b9da0e
    Will Deacon 提交于
    commit b6143d10d23ebb4a77af311e8b8b7f019d0163e6 upstream.
    
    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: NWill Deacon <will@kernel.org>
    Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    30b9da0e
ftrace.c 7.1 KB