Signed-off-by: Harvey Harrison <[EMAIL PROTECTED]> --- arch/x86/kernel/kprobes_32.c | 8 ++++---- include/asm-x86/kprobes.h | 5 +---- 2 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/arch/x86/kernel/kprobes_32.c b/arch/x86/kernel/kprobes_32.c index b47381e..615f24a 100644 --- a/arch/x86/kernel/kprobes_32.c +++ b/arch/x86/kernel/kprobes_32.c @@ -101,13 +101,13 @@ static __always_inline int can_boost(kprobe_opcode_t *opcodes) kprobe_opcode_t opcode; kprobe_opcode_t *orig_opcodes = opcodes; retry: - if (opcodes - orig_opcodes > MAX_INSN_SIZE - 1) + if (opcodes - orig_opcodes > MAX_INSN_SIZE) return 0; opcode = *(opcodes++); /* 2nd-byte opcode */ if (opcode == 0x0f) { - if (opcodes - orig_opcodes > MAX_INSN_SIZE - 1) + if (opcodes - orig_opcodes > MAX_INSN_SIZE) return 0; return test_bit(*opcodes, twobyte_is_boostable); } @@ -164,7 +164,7 @@ int __kprobes arch_prepare_kprobe(struct kprobe *p) if (!p->ainsn.insn) return -ENOMEM; - memcpy(p->ainsn.insn, p->addr, MAX_INSN_SIZE * sizeof(kprobe_opcode_t)); + memcpy(p->ainsn.insn, p->addr, (MAX_INSN_SIZE + 1) * sizeof(kprobe_opcode_t)); p->opcode = *p->addr; if (can_boost(p->addr)) { p->ainsn.boostable = 0; @@ -539,7 +539,7 @@ static void __kprobes resume_execution(struct kprobe *p, if (p->ainsn.boostable == 0) { if ((regs->ip > copy_eip) && - (regs->ip - copy_eip) + 5 < MAX_INSN_SIZE) { + (regs->ip - copy_eip) + 5 < (MAX_INSN_SIZE + 1)) { /* * These instructions can be executed directly if it * jumps back to correct address. diff --git a/include/asm-x86/kprobes.h b/include/asm-x86/kprobes.h index 87b9d1b..e348ed6 100644 --- a/include/asm-x86/kprobes.h +++ b/include/asm-x86/kprobes.h @@ -35,12 +35,9 @@ struct kprobe; struct pt_regs; typedef u8 kprobe_opcode_t; -#ifdef CONFIG_X86_32 + # define RELATIVEJUMP_INSTRUCTION 0xe9 -# define MAX_INSN_SIZE 16 -#else # define MAX_INSN_SIZE 15 -#endif #define BREAKPOINT_INSTRUCTION 0xcc #define MAX_STACK_SIZE 64 -- 1.5.4.rc0.1083.gf568 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/