lkml.org 
[lkml]   [2018]   [Jun]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC PATCH -tip v5 10/27] s390/kprobes: Remove jprobe implementation
    Date
    Remove arch dependent setjump/longjump functions
    and unused fields in kprobe_ctlblk for jprobes
    from arch/s390.

    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: linux-s390@vger.kernel.org
    ---
    arch/s390/include/asm/kprobes.h | 2 -
    arch/s390/kernel/kprobes.c | 59 +--------------------------------------
    2 files changed, 2 insertions(+), 59 deletions(-)

    diff --git a/arch/s390/include/asm/kprobes.h b/arch/s390/include/asm/kprobes.h
    index 13de80cf741c..b106aa29bf55 100644
    --- a/arch/s390/include/asm/kprobes.h
    +++ b/arch/s390/include/asm/kprobes.h
    @@ -68,8 +68,6 @@ struct kprobe_ctlblk {
    unsigned long kprobe_saved_imask;
    unsigned long kprobe_saved_ctl[3];
    struct prev_kprobe prev_kprobe;
    - struct pt_regs jprobe_saved_regs;
    - kprobe_opcode_t jprobes_stack[MAX_STACK_SIZE];
    };

    void arch_remove_kprobe(struct kprobe *p);
    diff --git a/arch/s390/kernel/kprobes.c b/arch/s390/kernel/kprobes.c
    index 60f60afa645c..0967de19f53d 100644
    --- a/arch/s390/kernel/kprobes.c
    +++ b/arch/s390/kernel/kprobes.c
    @@ -321,9 +321,8 @@ static int kprobe_handler(struct pt_regs *regs)
    * If we have no pre-handler or it returned 0, we
    * continue with single stepping. If we have a
    * pre-handler and it returned non-zero, it prepped
    - * for calling the break_handler below on re-entry
    - * for jprobe processing, so get out doing nothing
    - * more here.
    + * for changing execution path, so get out doing
    + * nothing more here.
    */
    push_kprobe(kcb, p);
    kcb->kprobe_status = KPROBE_HIT_ACTIVE;
    @@ -661,60 +660,6 @@ int kprobe_exceptions_notify(struct notifier_block *self,
    }
    NOKPROBE_SYMBOL(kprobe_exceptions_notify);

    -int setjmp_pre_handler(struct kprobe *p, struct pt_regs *regs)
    -{
    - struct jprobe *jp = container_of(p, struct jprobe, kp);
    - struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
    - unsigned long stack;
    -
    - memcpy(&kcb->jprobe_saved_regs, regs, sizeof(struct pt_regs));
    -
    - /* setup return addr to the jprobe handler routine */
    - regs->psw.addr = (unsigned long) jp->entry;
    - regs->psw.mask &= ~(PSW_MASK_IO | PSW_MASK_EXT);
    -
    - /* r15 is the stack pointer */
    - stack = (unsigned long) regs->gprs[15];
    -
    - memcpy(kcb->jprobes_stack, (void *) stack, MIN_STACK_SIZE(stack));
    -
    - /*
    - * jprobes use jprobe_return() which skips the normal return
    - * path of the function, and this messes up the accounting of the
    - * function graph tracer to get messed up.
    - *
    - * Pause function graph tracing while performing the jprobe function.
    - */
    - pause_graph_tracing();
    - return 1;
    -}
    -NOKPROBE_SYMBOL(setjmp_pre_handler);
    -
    -void jprobe_return(void)
    -{
    - asm volatile(".word 0x0002");
    -}
    -NOKPROBE_SYMBOL(jprobe_return);
    -
    -int longjmp_break_handler(struct kprobe *p, struct pt_regs *regs)
    -{
    - struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
    - unsigned long stack;
    -
    - /* It's OK to start function graph tracing again */
    - unpause_graph_tracing();
    -
    - stack = (unsigned long) kcb->jprobe_saved_regs.gprs[15];
    -
    - /* Put the regs back */
    - memcpy(regs, &kcb->jprobe_saved_regs, sizeof(struct pt_regs));
    - /* put the stack back */
    - memcpy((void *) stack, kcb->jprobes_stack, MIN_STACK_SIZE(stack));
    - preempt_enable_no_resched();
    - return 1;
    -}
    -NOKPROBE_SYMBOL(longjmp_break_handler);
    -
    static struct kprobe trampoline = {
    .addr = (kprobe_opcode_t *) &kretprobe_trampoline,
    .pre_handler = trampoline_probe_handler
    \
     
     \ /
      Last update: 2018-06-04 17:53    [W:4.190 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site