From: bibo mao Remove code in kprobe_handler() function which calculates user space int3 trap address in i386 architecture. Signed-off-by: bibo mao Cc: Ananth N Mavinakayanahalli Cc: "Keshavamurthy, Anil S" Cc: Cc: Prasanna S Panchamukhi Signed-off-by: Andrew Morton --- arch/i386/kernel/kprobes.c | 15 +++------------ 1 files changed, 3 insertions(+), 12 deletions(-) diff -puN arch/i386/kernel/kprobes.c~kprobe-handler-discard-user-space-trap-fix arch/i386/kernel/kprobes.c --- devel/arch/i386/kernel/kprobes.c~kprobe-handler-discard-user-space-trap-fix 2006-02-28 22:49:52.000000000 -0800 +++ devel-akpm/arch/i386/kernel/kprobes.c 2006-02-28 22:49:52.000000000 -0800 @@ -203,13 +203,15 @@ static int __kprobes kprobe_handler(stru { struct kprobe *p; int ret = 0; - kprobe_opcode_t *addr = NULL; + kprobe_opcode_t *addr; unsigned long *lp; struct kprobe_ctlblk *kcb; #ifdef CONFIG_PREEMPT unsigned pre_preempt_count = preempt_count(); #endif /* CONFIG_PREEMPT */ + addr = (kprobe_opcode_t *)(regs->eip - sizeof(kprobe_opcode_t)); + /* * We don't want to be preempted for the entire * duration of kprobe processing @@ -217,17 +219,6 @@ static int __kprobes kprobe_handler(stru preempt_disable(); kcb = get_kprobe_ctlblk(); - /* Check if the application is using LDT entry for its code segment and - * calculate the address by reading the base address from the LDT entry. - */ - if ((regs->xcs & 4) && (current->mm)) { - lp = (unsigned long *) ((unsigned long)((regs->xcs >> 3) * 8) - + (char *) current->mm->context.ldt); - addr = (kprobe_opcode_t *) (get_desc_base(lp) + regs->eip - - sizeof(kprobe_opcode_t)); - } else { - addr = (kprobe_opcode_t *)(regs->eip - sizeof(kprobe_opcode_t)); - } /* Check we're not actually recursing */ if (kprobe_running()) { p = get_kprobe(addr); _