if (put_user(regs->gpr[1], (unsigned long __user *)newsp)) 
if (put_user(regs->gpr[1], (u32 __user *)newsp)) 
static int handle_rt_signal32(unsigned long sig, struct k_sigaction *ka,			      siginfo_t *info, sigset_t *oldset,			      struct pt_regs * regs, unsigned long newsp){	struct rt_sigframe32 __user *rt_sf;	struct mcontext32 __user *frame;	unsigned long origsp = newsp;	compat_sigset_t c_oldset;	/* Set up Signal Frame */	/* Put a Real Time Context onto stack */	newsp -= sizeof(*rt_sf);	rt_sf = (struct rt_sigframe32 __user *)newsp;	/* create a stack frame for the caller of the handler */	newsp -= __SIGNAL_FRAMESIZE32 + 16;	if (!access_ok(VERIFY_WRITE, (void __user *)newsp, origsp - newsp))		goto badframe;	compat_from_sigset(&c_oldset, oldset);	/* Put the siginfo & fill in most of the ucontext */	if (copy_siginfo_to_user32(&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((u32)(u64)&rt_sf->uc.uc_mcontext, &rt_sf->uc.uc_regs)	    || __copy_to_user(&rt_sf->uc.uc_sigmask, &c_oldset, sizeof(c_oldset)))		goto badframe;	/* Save user registers on the stack */	frame = &rt_sf->uc.uc_mcontext;	if (put_user(regs->gpr[1], (unsigned long __user *)newsp))		goto badframe;	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;	}	regs->gpr[1] = (unsigned long) 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;	regs->result = 0;	if (test_thread_flag(TIF_SINGLESTEP))		ptrace_notify(SIGTRAP);	return 1;badframe:#if 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/9747dd6fa98f2983f4dd09cd6dad1fa3d2a4c5f2/signal32.c/buggy/arch/ppc64/kernel/signal32.c