sigaddset(&current->blocked, signr); 
if (!(ka.sa.sa_flags & SA_NODEFER)) sigaddset(&current->blocked, signr); 
int do_signal32(sigset_t *oldset, struct pt_regs *regs){	siginfo_t info;	unsigned int frame, newsp;	int signr, ret;	struct k_sigaction ka;	if (!oldset)		oldset = &current->blocked;	newsp = frame = 0;	signr = get_signal_to_deliver(&info, &ka, regs, NULL);	if (TRAP(regs) == 0x0C00		/* System Call! */	    && regs->ccr & 0x10000000		/* error signalled */	    && ((ret = regs->gpr[3]) == ERESTARTSYS		|| ret == ERESTARTNOHAND || ret == ERESTARTNOINTR		|| ret == ERESTART_RESTARTBLOCK)) {		if (signr > 0		    && (ret == ERESTARTNOHAND || ret == ERESTART_RESTARTBLOCK			|| (ret == ERESTARTSYS			    && !(ka.sa.sa_flags & SA_RESTART)))) {			/* make the system call return an EINTR error */			regs->result = -EINTR;			regs->gpr[3] = EINTR;			/* note that the cr0.SO bit is already set */		} else {			regs->nip -= 4;	/* Back up & retry system call */			regs->result = 0;			regs->trap = 0;			if (ret == ERESTART_RESTARTBLOCK)				regs->gpr[0] = __NR_restart_syscall;			else				regs->gpr[3] = regs->orig_gpr3;		}	}	if (signr == 0)		return 0;		/* no signals delivered */	if ((ka.sa.sa_flags & SA_ONSTACK) && current->sas_ss_size	    && (!on_sig_stack(regs->gpr[1])))		newsp = (current->sas_ss_sp + current->sas_ss_size);	else		newsp = regs->gpr[1];	newsp &= ~0xfUL;	/* Whee!  Actually deliver the signal.  */	if (ka.sa.sa_flags & SA_SIGINFO)		ret = handle_rt_signal32(signr, &ka, &info, oldset, regs, newsp);	else		ret = handle_signal32(signr, &ka, &info, oldset, regs, newsp);	if (ret && !(ka.sa.sa_flags & SA_NODEFER)) {		spin_lock_irq(&current->sighand->siglock);		sigorsets(&current->blocked, &current->blocked,			  &ka.sa.sa_mask);		sigaddset(&current->blocked, signr);		recalc_sigpending();		spin_unlock_irq(&current->sighand->siglock);	}	return ret;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/69be8f189653cd81aae5a74e26615b12871bb72e/signal32.c/buggy/arch/ppc64/kernel/signal32.c