lkml.org 
[lkml]   [2015]   [Jan]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC PATCH 03/11] x86: kprobes: directly modify code if kprobe is not initialized.
    Date
    When registering early kprobes, SMP should has not been enabled, so
    doesn't require synchronization in text_poke_bp(). Simply memcpy is
    enough.

    Signed-off-by: Wang Nan <wangnan0@huawei.com>
    ---
    arch/x86/kernel/kprobes/opt.c | 7 +++++--
    1 file changed, 5 insertions(+), 2 deletions(-)

    diff --git a/arch/x86/kernel/kprobes/opt.c b/arch/x86/kernel/kprobes/opt.c
    index 0dd8d08..dc5fccb 100644
    --- a/arch/x86/kernel/kprobes/opt.c
    +++ b/arch/x86/kernel/kprobes/opt.c
    @@ -397,8 +397,11 @@ void arch_optimize_kprobes(struct list_head *oplist)
    insn_buf[0] = RELATIVEJUMP_OPCODE;
    *(s32 *)(&insn_buf[1]) = rel;

    - text_poke_bp(op->kp.addr, insn_buf, RELATIVEJUMP_SIZE,
    - op->optinsn.insn);
    + if (unlikely(!kprobes_initialized))
    + memcpy(op->kp.addr, insn_buf, RELATIVEJUMP_SIZE);
    + else
    + text_poke_bp(op->kp.addr, insn_buf, RELATIVEJUMP_SIZE,
    + op->optinsn.insn);

    list_del_init(&op->list);
    }
    --
    1.8.4


    \
     
     \ /
      Last update: 2015-01-07 09:21    [W:4.994 / U:0.368 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site