tss->io_bitmap_owner = thread; 
fastcall void __kprobes do_general_protection(struct pt_regs * regs,					      long error_code){	int cpu = get_cpu();	struct tss_struct *tss = &per_cpu(init_tss, cpu);	struct thread_struct *thread = &current->thread;	/*	 * Perform the lazy TSS's I/O bitmap copy. If the TSS has an	 * invalid offset set (the LAZY one) and the faulting thread has	 * a valid I/O bitmap pointer, we copy the I/O bitmap in the TSS	 * and we set the offset field correctly. Then we let the CPU to	 * restart the faulting instruction.	 */	if (tss->io_bitmap_base == INVALID_IO_BITMAP_OFFSET_LAZY &&	    thread->io_bitmap_ptr) {		memcpy(tss->io_bitmap, thread->io_bitmap_ptr,		       thread->io_bitmap_max);		/*		 * If the previously set map was extending to higher ports		 * than the current one, pad extra space with 0xff (no access).		 */		if (thread->io_bitmap_max < tss->io_bitmap_max)			memset((char *) tss->io_bitmap +				thread->io_bitmap_max, 0xff,				tss->io_bitmap_max - thread->io_bitmap_max);		tss->io_bitmap_max = thread->io_bitmap_max;		tss->io_bitmap_base = IO_BITMAP_OFFSET;		put_cpu();		return;	}	put_cpu();	current->thread.error_code = error_code;	current->thread.trap_no = 13;	if (regs->eflags & VM_MASK)		goto gp_in_vm86;	if (!user_mode(regs))		goto gp_in_kernel;	current->thread.error_code = error_code;	current->thread.trap_no = 13;	force_sig(SIGSEGV, current);	return;gp_in_vm86:	local_irq_enable();	handle_vm86_fault((struct kernel_vm86_regs *) regs, error_code);	return;gp_in_kernel:	if (!fixup_exception(regs)) {		if (notify_die(DIE_GPF, "general protection fault", regs,				error_code, 13, SIGSEGV) == NOTIFY_STOP)			return;		die("general protection fault", regs, error_code);	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/d5cd4aadd3d220afac8e3e6d922e333592551f7d/traps.c/clean/arch/i386/kernel/traps.c