*tos |= kprobe_old_rflags; 
*tos |= kcb->kprobe_old_rflags; 
static void __kprobes resume_execution(struct kprobe *p, struct pt_regs *regs){	unsigned long *tos = (unsigned long *)regs->rsp;	unsigned long next_rip = 0;	unsigned long copy_rip = (unsigned long)p->ainsn.insn;	unsigned long orig_rip = (unsigned long)p->addr;	kprobe_opcode_t *insn = p->ainsn.insn;	/*skip the REX prefix*/	if (*insn >= 0x40 && *insn <= 0x4f)		insn++;	switch (*insn) {	case 0x9c:		/* pushfl */		*tos &= ~(TF_MASK | IF_MASK);		*tos |= kprobe_old_rflags;		break;	case 0xc3:		/* ret/lret */	case 0xcb:	case 0xc2:	case 0xca:		regs->eflags &= ~TF_MASK;		/* rip is already adjusted, no more changes required*/		return;	case 0xe8:		/* call relative - Fix return addr */		*tos = orig_rip + (*tos - copy_rip);		break;	case 0xff:		if ((*insn & 0x30) == 0x10) {			/* call absolute, indirect */			/* Fix return addr; rip is correct. */			next_rip = regs->rip;			*tos = orig_rip + (*tos - copy_rip);		} else if (((*insn & 0x31) == 0x20) ||	/* jmp near, absolute indirect */			   ((*insn & 0x31) == 0x21)) {	/* jmp far, absolute indirect */			/* rip is correct. */			next_rip = regs->rip;		}		break;	case 0xea:		/* jmp absolute -- rip is correct */		next_rip = regs->rip;		break;	default:		break;	}	regs->eflags &= ~TF_MASK;	if (next_rip) {		regs->rip = next_rip;	} else {		regs->rip = orig_rip + (regs->rip - copy_rip);	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/e7a510f92c1e482a7db05afd3cb84af1f4cfe0bc/kprobes.c/buggy/arch/x86_64/kernel/kprobes.c