lkml.org 
[lkml]   [2009]   [Dec]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH -tip v7 11/11] [RFC] kprobes/x86: Use text_poke_fixup() for jump optimization
    Date
    Use text_poke_fixup() for jump optimization instead of text_poke_smp().

    Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
    Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Jim Keniston <jkenisto@us.ibm.com>
    Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
    Cc: Christoph Hellwig <hch@infradead.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Anders Kaseorg <andersk@ksplice.com>
    Cc: Tim Abbott <tabbott@ksplice.com>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: Jason Baron <jbaron@redhat.com>
    Cc: Mathieu Desnoyers <compudj@krystal.dyndns.org>
    ---

    arch/x86/kernel/kprobes.c | 10 +++-------
    1 files changed, 3 insertions(+), 7 deletions(-)

    diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c
    index 9d2c873..8f2e0d2 100644
    --- a/arch/x86/kernel/kprobes.c
    +++ b/arch/x86/kernel/kprobes.c
    @@ -1376,12 +1376,8 @@ int __kprobes arch_optimize_kprobe(struct optimized_kprobe *op)
    jmp_code[0] = RELATIVEJUMP_OPCODE;
    *(s32 *)(&jmp_code[1]) = rel;

    - /*
    - * text_poke_smp doesn't support NMI/MCE code modifying.
    - * However, since kprobes itself also doesn't support NMI/MCE
    - * code probing, it's not a problem.
    - */
    - text_poke_smp(op->kp.addr, jmp_code, RELATIVEJUMP_SIZE);
    + text_poke_fixup(op->kp.addr, jmp_code, RELATIVEJUMP_SIZE,
    + op->optinsn.insn);
    return 0;
    }

    @@ -1393,7 +1389,7 @@ void __kprobes arch_unoptimize_kprobe(struct optimized_kprobe *op)
    /* Set int3 to first byte for kprobes */
    buf[0] = BREAKPOINT_INSTRUCTION;
    memcpy(buf + 1, op->optinsn.copied_insn, RELATIVE_ADDR_SIZE);
    - text_poke_smp(op->kp.addr, buf, RELATIVEJUMP_SIZE);
    + text_poke_fixup(op->kp.addr, buf, RELATIVEJUMP_SIZE, op->optinsn.insn);
    }

    static int __kprobes setup_detour_execution(struct kprobe *p,

    --
    Masami Hiramatsu

    Software Engineer
    Hitachi Computer Products (America), Inc.
    Software Solutions Division

    e-mail: mhiramat@redhat.com


    \
     
     \ /
      Last update: 2009-12-18 19:17    [W:0.024 / U:0.256 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site