 current->thread.fpscr.val = 0;	/* turn off all fp exceptions */  
static int handle_rt_signal(unsigned long sig, struct k_sigaction *ka,		siginfo_t *info, sigset_t *oldset,		struct pt_regs *regs, unsigned long newsp){	struct rt_sigframe __user *rt_sf;	struct mcontext __user *frame;	unsigned long origsp = newsp;	/* Set up Signal Frame */	/* Put a Real Time Context onto stack */	newsp -= sizeof(*rt_sf);	rt_sf = (struct rt_sigframe __user *)newsp;	/* create a stack frame for the caller of the handler */	newsp -= __SIGNAL_FRAMESIZE + 16;	if (!access_ok(VERIFY_WRITE, (void __user *)newsp, origsp - newsp))		goto badframe;	/* Put the siginfo & fill in most of the ucontext */	if (copy_siginfo_to_user(&rt_sf->info, info)	    || __put_user(0, &rt_sf->uc.uc_flags)	    || __put_user(0, &rt_sf->uc.uc_link)	    || __put_user(current->sas_ss_sp, &rt_sf->uc.uc_stack.ss_sp)	    || __put_user(sas_ss_flags(regs->gpr[1]),			  &rt_sf->uc.uc_stack.ss_flags)	    || __put_user(current->sas_ss_size, &rt_sf->uc.uc_stack.ss_size)	    || __put_user(to_user_ptr(&rt_sf->uc.uc_mcontext),		    &rt_sf->uc.uc_regs)	    || put_sigset_t(&rt_sf->uc.uc_sigmask, oldset))		goto badframe;	/* Save user registers on the stack */	frame = &rt_sf->uc.uc_mcontext;	if (vdso32_rt_sigtramp && current->thread.vdso_base) {		if (save_user_regs(regs, frame, 0))			goto badframe;		regs->link = current->thread.vdso_base + vdso32_rt_sigtramp;	} else {		if (save_user_regs(regs, frame, __NR_rt_sigreturn))			goto badframe;		regs->link = (unsigned long) frame->tramp;	}	if (put_user(regs->gpr[1], (u32 __user *)newsp))		goto badframe;	regs->gpr[1] = newsp;	regs->gpr[3] = sig;	regs->gpr[4] = (unsigned long) &rt_sf->info;	regs->gpr[5] = (unsigned long) &rt_sf->uc;	regs->gpr[6] = (unsigned long) rt_sf;	regs->nip = (unsigned long) ka->sa.sa_handler;	regs->trap = 0;#ifdef CONFIG_PPC64	regs->result = 0;	if (test_thread_flag(TIF_SINGLESTEP))		ptrace_notify(SIGTRAP);#endif	return 1;badframe:#ifdef DEBUG_SIG	printk("badframe in handle_rt_signal, regs=%p frame=%p newsp=%lx\n",	       regs, frame, newsp);#endif	force_sigsegv(sig, current);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/cc657f53928997c65bf2409c45166c6ceee8d306/signal_32.c/buggy/arch/powerpc/kernel/signal_32.c