On Fri, 2009-04-03 at 12:02 -0400, Masami Hiramatsu wrote: > Ensure safeness of inserting kprobes by checking whether the specified > address is at the first byte of a instruction. This is done by decoding > probed function from its head to the probe point. > > changes from v4: > - change a comment according to Ananth's suggestion. > > Signed-off-by: Masami Hiramatsu <mhiramat@xxxxxxxxxx> > Cc: Ananth N Mavinakayanahalli <ananth@xxxxxxxxxx> > Cc: Jim Keniston <jkenisto@xxxxxxxxxx> > Cc: Ingo Molnar <mingo@xxxxxxx> > --- > > arch/x86/kernel/kprobes.c | 51 +++++++++++++++++++++++++++++++++++++++++++++ > 1 files changed, 51 insertions(+), 0 deletions(-) > > > diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c ... > > +/* Recover original instruction */ /* Recover the probed instruction at addr for further analysis. */ See below. > +static int recover_probed_instruction(kprobe_opcode_t *buf, unsigned long addr) > +{ > + struct kprobe *kp; > + kp = get_kprobe((void *)addr); > + if (!kp) > + return -EINVAL; > + > + /* Don't use p->ainsn.insn; which will be modified by fix_riprel */ fix_riprel doesn't affect the instruction's length, which is what concerns this patch. But we want this function to be useful for unforeseen uses as well, so I like the code you have. Just consider the suggested comment changes. /* * Don't use p->ainsn.insn, which could be modified -- e.g., * by fix_riprel(). */ > + memcpy(buf, kp->addr, MAX_INSN_SIZE * sizeof(kprobe_opcode_t)); > + buf[0] = kp->opcode; > + return 0; > +} Jim Keniston -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html