if ((regs->cs & 3)  != 0) { 
if (user_mode(regs)) { 
static void do_trap(int trapnr, int signr, char *str, 			   struct pt_regs * regs, long error_code, siginfo_t *info){	conditional_sti(regs);#ifdef CONFIG_CHECKING       {                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("%s: wrong gs %lx expected %p rip %lx\n", str, gs, pda,			      regs->rip);               }       }#endif	if ((regs->cs & 3)  != 0) { 		struct task_struct *tsk = current;		if (exception_trace && unhandled_signal(tsk, signr))			printk(KERN_INFO			       "%s[%d] trap %s rip:%lx rsp:%lx error:%lx\n",			       tsk->comm, tsk->pid, str,			       regs->rip,regs->rsp,error_code); 		tsk->thread.error_code = error_code;		tsk->thread.trap_no = trapnr;		if (info)			force_sig_info(signr, info, tsk);		else			force_sig(signr, tsk);		return;	}	/* kernel trap */ 	{	     		const struct exception_table_entry *fixup;		fixup = search_exception_tables(regs->rip);		if (fixup) {			regs->rip = fixup->fixup;		} else				die(str, regs, error_code);		return;	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/76381fee7e8feb4c22be636aa5d4765dbe4fbf9e/traps.c/buggy/arch/x86_64/kernel/traps.c