return; 
return 1; 
static void setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,			   sigset_t *set, struct pt_regs * regs){	struct rt_sigframe __user *frame;	struct _fpstate __user *fp = NULL; 	int err = 0;	struct task_struct *me = current;	if (used_math()) {		fp = get_stack(ka, regs, sizeof(struct _fpstate)); 		frame = (void __user *)round_down(			(unsigned long)fp - sizeof(struct rt_sigframe), 16) - 8;		if (!access_ok(VERIFY_WRITE, fp, sizeof(struct _fpstate)))			goto give_sigsegv;		if (save_i387(fp) < 0) 			err |= -1; 	} else		frame = get_stack(ka, regs, sizeof(struct rt_sigframe)) - 8;	if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))		goto give_sigsegv;	if (ka->sa.sa_flags & SA_SIGINFO) { 		err |= copy_siginfo_to_user(&frame->info, info);		if (err)			goto give_sigsegv;	}			/* Create the ucontext.  */	err |= __put_user(0, &frame->uc.uc_flags);	err |= __put_user(0, &frame->uc.uc_link);	err |= __put_user(me->sas_ss_sp, &frame->uc.uc_stack.ss_sp);	err |= __put_user(sas_ss_flags(regs->rsp),			  &frame->uc.uc_stack.ss_flags);	err |= __put_user(me->sas_ss_size, &frame->uc.uc_stack.ss_size);	err |= setup_sigcontext(&frame->uc.uc_mcontext, regs, set->sig[0], me);	err |= __put_user(fp, &frame->uc.uc_mcontext.fpstate);	if (sizeof(*set) == 16) { 		__put_user(set->sig[0], &frame->uc.uc_sigmask.sig[0]);		__put_user(set->sig[1], &frame->uc.uc_sigmask.sig[1]); 	} else		err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set));	/* Set up to return from userspace.  If provided, use a stub	   already in userspace.  */	/* x86-64 should always use SA_RESTORER. */	if (ka->sa.sa_flags & SA_RESTORER) {		err |= __put_user(ka->sa.sa_restorer, &frame->pretcode);	} else {		/* could use a vstub here */		goto give_sigsegv; 	}	if (err)		goto give_sigsegv;#ifdef DEBUG_SIG	printk("%d old rip %lx old rsp %lx old rax %lx\n", current->pid,regs->rip,regs->rsp,regs->rax);#endif	/* Set up registers for signal handler */	{ 		struct exec_domain *ed = current_thread_info()->exec_domain;		if (unlikely(ed && ed->signal_invmap && sig < 32))			sig = ed->signal_invmap[sig];	} 	regs->rdi = sig;	/* In case the signal handler was declared without prototypes */ 	regs->rax = 0;		/* This also works for non SA_SIGINFO handlers because they expect the	   next argument after the signal number on the stack. */	regs->rsi = (unsigned long)&frame->info; 	regs->rdx = (unsigned long)&frame->uc; 	regs->rip = (unsigned long) ka->sa.sa_handler;	regs->rsp = (unsigned long)frame;	set_fs(USER_DS);	regs->eflags &= ~TF_MASK;	if (test_thread_flag(TIF_SINGLESTEP))		ptrace_notify(SIGTRAP);#ifdef DEBUG_SIG	printk("SIG deliver (%s:%d): sp=%p pc=%p ra=%p\n",		current->comm, current->pid, frame, regs->rip, frame->pretcode);#endif	return;give_sigsegv:	force_sigsegv(sig, current);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/0928d6ef7f204979749fb241a90a04a35dae133a/signal.c/clean/arch/x86_64/kernel/signal.c