Re: [PATCH -tip 4/6 V4.1] x86: kprobes checks safeness of insertion address.

2009-04-03 Thread Jim Keniston
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 mhira...@redhat.com
 Cc: Ananth N Mavinakayanahalli ana...@in.ibm.com
 Cc: Jim Keniston jkeni...@us.ibm.com
 Cc: Ingo Molnar mi...@elte.hu
 ---
 
  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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH -tip 4/6 V4.1] x86: kprobes checks safeness of insertion address.

2009-04-03 Thread Masami Hiramatsu
Jim Keniston wrote:
 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 mhira...@redhat.com
 Cc: Ananth N Mavinakayanahalli ana...@in.ibm.com
 Cc: Jim Keniston jkeni...@us.ibm.com
 Cc: Ingo Molnar mi...@elte.hu
 ---

  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.

Sure.

 
 +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().
*/

Thanks, I'll update comments then!

 
 +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 linux-kernel in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
 Please read the FAQ at  http://www.tux.org/lkml/

-- 
Masami Hiramatsu

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

e-mail: mhira...@redhat.com

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html