• Naveen N. Rao's avatar
    powerpc/kprobes: Skip livepatch_handler() for jprobes · c05b8c44
    Naveen N. Rao authored
    ftrace_caller() depends on a modified regs->nip to detect if a certain
    function has been livepatched. However, with KPROBES_ON_FTRACE, it is
    possible for regs->nip to have been modified by the kprobes pre_handler
    (jprobes, for instance). In this case, we do not want to invoke the
    livepatch_handler so as not to consume the livepatch stack.
    
    To distinguish between the two (kprobes and livepatch), we check if
    there is an active kprobe on the current function. If there is, then we
    know for sure that it must have modified the NIP as we don't support
    livepatching a kprobe'd function. In this case, we simply skip the
    livepatch_handler and branch to the new NIP. Otherwise, the
    livepatch_handler is invoked.
    
    Fixes: ead514d5 ("powerpc/kprobes: Add support for KPROBES_ON_FTRACE")
    Signed-off-by: default avatarNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Reviewed-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    c05b8c44
kprobes.c 18.5 KB