if (ret != 0 || !(ka->sa.sa_flags & SA_NODEFER)) { 
if (ret != 0) { 
handle_signal(unsigned long sig, struct k_sigaction *ka,	      siginfo_t *info, sigset_t *oldset,	      struct pt_regs * regs, int syscall){	struct thread_info *thread = current_thread_info();	struct task_struct *tsk = current;	int usig = sig;	int ret;	/*	 * If we were from a system call, check for system call restarting...	 */	if (syscall) {		switch (regs->ARM_r0) {		case -ERESTART_RESTARTBLOCK:		case -ERESTARTNOHAND:			regs->ARM_r0 = -EINTR;			break;		case -ERESTARTSYS:			if (!(ka->sa.sa_flags & SA_RESTART)) {				regs->ARM_r0 = -EINTR;				break;			}			/* fallthrough */		case -ERESTARTNOINTR:			restart_syscall(regs);		}	}	/*	 * translate the signal	 */	if (usig < 32 && thread->exec_domain && thread->exec_domain->signal_invmap)		usig = thread->exec_domain->signal_invmap[usig];	/*	 * Set up the stack frame	 */	if (ka->sa.sa_flags & SA_SIGINFO)		ret = setup_rt_frame(usig, ka, info, oldset, regs);	else		ret = setup_frame(usig, ka, oldset, regs);	/*	 * Check that the resulting registers are actually sane.	 */	ret |= !valid_user_regs(regs);	/*	 * Block the signal if we were unsuccessful.	 */	if (ret != 0 || !(ka->sa.sa_flags & SA_NODEFER)) {		spin_lock_irq(&tsk->sighand->siglock);		sigorsets(&tsk->blocked, &tsk->blocked,			  &ka->sa.sa_mask);		sigaddset(&tsk->blocked, sig);		recalc_sigpending();		spin_unlock_irq(&tsk->sighand->siglock);	}	if (ret == 0)		return;	force_sigsegv(sig, tsk);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/69be8f189653cd81aae5a74e26615b12871bb72e/signal.c/clean/arch/arm/kernel/signal.c