asmlinkage void do_debug(struct pt_regs * regs, unsigned long error_code) 
asmlinkage void __kprobes do_debug(struct pt_regs * regs, unsigned long error_code) 
asmlinkage void do_debug(struct pt_regs * regs, unsigned long error_code){	unsigned long condition;	struct task_struct *tsk = current;	siginfo_t info;#ifdef CONFIG_CHECKING       { 	       /* RED-PEN interaction with debugger - could destroy gs */               unsigned long gs;                struct x8664_pda *pda = cpu_pda + safe_smp_processor_id();                rdmsrl(MSR_GS_BASE, gs);                if (gs != (unsigned long)pda) {                        wrmsrl(MSR_GS_BASE, pda);                        printk("debug handler: wrong gs %lx expected %p\n", gs, pda);               }       }#endif	get_debugreg(condition, 6);	if (notify_die(DIE_DEBUG, "debug", regs, condition, error_code,						SIGTRAP) == NOTIFY_STOP)		return;	conditional_sti(regs);	/* Mask out spurious debug traps due to lazy DR7 setting */	if (condition & (DR_TRAP0|DR_TRAP1|DR_TRAP2|DR_TRAP3)) {		if (!tsk->thread.debugreg7) { 			goto clear_dr7;		}	}	tsk->thread.debugreg6 = condition;	/* Mask out spurious TF errors due to lazy TF clearing */	if (condition & DR_STEP) {		/*		 * The TF error should be masked out only if the current		 * process is not traced and if the TRAP flag has been set		 * previously by a tracing process (condition detected by		 * the PT_DTRACE flag); remember that the i386 TRAP flag		 * can be modified by the process itself in user mode,		 * allowing programs to debug themselves without the ptrace()		 * interface.		 */                if (!user_mode(regs))                       goto clear_TF_reenable;		/*		 * Was the TF flag set by a debugger? If so, clear it now,		 * so that register information is correct.		 */		if (tsk->ptrace & PT_DTRACE) {			regs->eflags &= ~TF_MASK;			tsk->ptrace &= ~PT_DTRACE;		}	}	/* Ok, finally something we can handle */	tsk->thread.trap_no = 1;	tsk->thread.error_code = error_code;	info.si_signo = SIGTRAP;	info.si_errno = 0;	info.si_code = TRAP_BRKPT;	if (!user_mode(regs))		goto clear_dr7; 	info.si_addr = (void __user *)regs->rip;	force_sig_info(SIGTRAP, &info, tsk);	clear_dr7:	set_debugreg(0UL, 7);	return;clear_TF_reenable:	set_tsk_thread_flag(tsk, TIF_SINGLESTEP);	regs->eflags &= ~TF_MASK;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/0f2fbdcbb041f9087da42f8ac2e81f2817098d2a/traps.c/buggy/arch/x86_64/kernel/traps.c