if (ka->sa.sa_flags & SA_RESETHAND)
                ka->sa.sa_handler = SIG_DFL;
 
-       if (!(ka->sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NODEFER)) 
                sigaddset(¤t->blocked,sig);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 }
 
 static inline void
 
        /*
         * Block the signal if we were unsuccessful.
         */
-       if (ret != 0 || !(ka->sa.sa_flags & SA_NODEFER)) {
+       if (ret != 0) {
                spin_lock_irq(&tsk->sighand->siglock);
                sigorsets(&tsk->blocked, &tsk->blocked,
                          &ka->sa.sa_mask);
-               sigaddset(&tsk->blocked, sig);
+               if (!(ka->sa.sa_flags & SA_NODEFER))
+                       sigaddset(&tsk->blocked, sig);
                recalc_sigpending();
                spin_unlock_irq(&tsk->sighand->siglock);
        }
 
                if (ka->sa.sa_flags & SA_ONESHOT)
                        ka->sa.sa_handler = SIG_DFL;
 
-               if (!(ka->sa.sa_flags & SA_NODEFER)) {
-                       spin_lock_irq(&tsk->sighand->siglock);
-                       sigorsets(&tsk->blocked, &tsk->blocked,
-                                 &ka->sa.sa_mask);
+               spin_lock_irq(&tsk->sighand->siglock);
+               sigorsets(&tsk->blocked, &tsk->blocked,
+                         &ka->sa.sa_mask);
+               if (!(ka->sa.sa_flags & SA_NODEFER))
                        sigaddset(&tsk->blocked, sig);
-                       recalc_sigpending();
-                       spin_unlock_irq(&tsk->sighand->siglock);
-               }
+               recalc_sigpending();
+               spin_unlock_irq(&tsk->sighand->siglock);
                return;
        }
 
 
        if (ka->sa.sa_flags & SA_ONESHOT)
                ka->sa.sa_handler = SIG_DFL;
 
-       if (!(ka->sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NODEFER))
                sigaddset(¤t->blocked,sig);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 }
 
 /*
 
        if (ka->sa.sa_flags & SA_ONESHOT)
                ka->sa.sa_handler = SIG_DFL;
 
-       if (!(ka->sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NODEFER))
                sigaddset(¤t->blocked,sig);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 }
 
 /*
 
        else
                setup_frame(sig, ka, oldset, regs);
 
-       if (!(ka->sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked, ¤t->blocked, &ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked, ¤t->blocked, &ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NODEFER))
                sigaddset(¤t->blocked, sig);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 } /* end handle_signal() */
 
 /*****************************************************************************/
 
        else
                setup_frame(sig, ka, oldset, regs);
 
-       if (!(ka->sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NODEFER))
                sigaddset(¤t->blocked,sig);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 }
 
 /*
 
        else
                ret = setup_frame(sig, ka, oldset, regs);
 
-       if (ret && !(ka->sa.sa_flags & SA_NODEFER)) {
+       if (ret) {
                spin_lock_irq(¤t->sighand->siglock);
                sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
-               sigaddset(¤t->blocked,sig);
+               if (!(ka->sa.sa_flags & SA_NODEFER))
+                       sigaddset(¤t->blocked,sig);
                recalc_sigpending();
                spin_unlock_irq(¤t->sighand->siglock);
        }
 
                if (!setup_frame(sig, ka, info, oldset, scr))
                        return 0;
 
-       if (!(ka->sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               {
-                       sigorsets(¤t->blocked, ¤t->blocked, &ka->sa.sa_mask);
-                       sigaddset(¤t->blocked, sig);
-                       recalc_sigpending();
-               }
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked, ¤t->blocked, &ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NODEFER))
+               sigaddset(¤t->blocked, sig);
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
        return 1;
 }
 
 
        /* Set up the stack frame */
        setup_rt_frame(sig, ka, info, oldset, regs);
 
-       if (!(ka->sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NODEFER))
                sigaddset(¤t->blocked,sig);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 }
 
 /*
 
        if (ka->sa.sa_flags & SA_ONESHOT)
                ka->sa.sa_handler = SIG_DFL;
 
-       if (!(ka->sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NODEFER))
                sigaddset(¤t->blocked,sig);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 }
 
 /*
 
        else
                setup_irix_frame(ka, regs, sig, oldset);
 
-       if (!(ka->sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NODEFER))
                sigaddset(¤t->blocked,sig);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 }
 
 asmlinkage int do_irix_signal(sigset_t *oldset, struct pt_regs *regs)
 
                setup_frame(ka, regs, sig, oldset);
 #endif
 
-       if (!(ka->sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NODEFER))
                sigaddset(¤t->blocked,sig);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 }
 
 extern int do_signal32(sigset_t *oldset, struct pt_regs *regs);
 
        else
                setup_frame(ka, regs, sig, oldset);
 
-       if (!(ka->sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NODEFER))
                sigaddset(¤t->blocked,sig);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 }
 
 int do_signal32(sigset_t *oldset, struct pt_regs *regs)
 
        if (!setup_rt_frame(sig, ka, info, oldset, regs, in_syscall))
                return 0;
 
-       if (!(ka->sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NODEFER))
                sigaddset(¤t->blocked,sig);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
        return 1;
 }
 
 
        else
                handle_signal(signr, &ka, &info, oldset, regs, newsp);
 
-       if (!(ka.sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka.sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka.sa.sa_mask);
+       if (!(ka.sa.sa_flags & SA_NODEFER))
                sigaddset(¤t->blocked, signr);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 
        return 1;
 }
 
        /* Set up Signal Frame */
        ret = setup_rt_frame(sig, ka, info, oldset, regs);
 
-       if (ret && !(ka->sa.sa_flags & SA_NODEFER)) {
+       if (ret) {
                spin_lock_irq(¤t->sighand->siglock);
                sigorsets(¤t->blocked, ¤t->blocked, &ka->sa.sa_mask);
-               sigaddset(¤t->blocked,sig);
+               if (!(ka->sa.sa_flags & SA_NODEFER))
+                       sigaddset(¤t->blocked,sig);
                recalc_sigpending();
                spin_unlock_irq(¤t->sighand->siglock);
        }
 
        else
                ret = handle_signal32(signr, &ka, &info, oldset, regs, newsp);
 
-       if (ret && !(ka.sa.sa_flags & SA_NODEFER)) {
+       if (ret) {
                spin_lock_irq(¤t->sighand->siglock);
                sigorsets(¤t->blocked, ¤t->blocked,
                          &ka.sa.sa_mask);
-               sigaddset(¤t->blocked, signr);
+               if (!(ka.sa.sa_flags & SA_NODEFER))
+                       sigaddset(¤t->blocked, signr);
                recalc_sigpending();
                spin_unlock_irq(¤t->sighand->siglock);
        }
 
        else
                setup_frame32(sig, ka, oldset, regs);
 
-       if (!(ka->sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NODEFER))
                sigaddset(¤t->blocked,sig);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 }
 
 
        else
                setup_frame(sig, ka, oldset, regs);
 
-       if (!(ka->sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NODEFER))
                sigaddset(¤t->blocked,sig);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 }
 
 /*
 
        if (ka->sa.sa_flags & SA_ONESHOT)
                ka->sa.sa_handler = SIG_DFL;
 
-       if (!(ka->sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NODEFER))
                sigaddset(¤t->blocked,sig);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 }
 
 /*
 
        else
                setup_frame(sig, ka, oldset, regs);
 
-       if (!(ka->sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NODEFER))
                sigaddset(¤t->blocked,sig);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 }
 
 /*
 
                else
                        setup_frame(&ka->sa, regs, signr, oldset, info);
        }
-       if (!(ka->sa.sa_flags & SA_NOMASK)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NOMASK))
                sigaddset(¤t->blocked, signr);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 }
 
 static inline void syscall_restart(unsigned long orig_i0, struct pt_regs *regs,
 
 {
        setup_rt_frame(ka, regs, signr, oldset,
                       (ka->sa.sa_flags & SA_SIGINFO) ? info : NULL);
-       if (!(ka->sa.sa_flags & SA_NOMASK)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NOMASK))
                sigaddset(¤t->blocked,signr);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 }
 
 static inline void syscall_restart(unsigned long orig_i0, struct pt_regs *regs,
 
                else
                        setup_frame32(&ka->sa, regs, signr, oldset, info);
        }
-       if (!(ka->sa.sa_flags & SA_NOMASK)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NOMASK))
                sigaddset(¤t->blocked,signr);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 }
 
 static inline void syscall_restart32(unsigned long orig_i0, struct pt_regs *regs,
 
                recalc_sigpending();
                spin_unlock_irq(¤t->sighand->siglock);
                force_sigsegv(signr, current);
-       }
-       else if(!(ka->sa.sa_flags & SA_NODEFER)){
+       } else {
                spin_lock_irq(¤t->sighand->siglock);
                sigorsets(¤t->blocked, ¤t->blocked, 
                          &ka->sa.sa_mask);
-               sigaddset(¤t->blocked, signr);
+                if(!(ka->sa.sa_flags & SA_NODEFER))
+                       sigaddset(¤t->blocked, signr);
                recalc_sigpending();
                spin_unlock_irq(¤t->sighand->siglock);
        }
 
        else
                setup_frame(sig, ka, oldset, regs);
 
-       if (!(ka->sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
+       if (!(ka->sa.sa_flags & SA_NODEFER))
                sigaddset(¤t->blocked,sig);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
 }
 
 /*
 
 #endif
        ret = setup_rt_frame(sig, ka, info, oldset, regs);
 
-       if (ret && !(ka->sa.sa_flags & SA_NODEFER)) {
+       if (ret) {
                spin_lock_irq(¤t->sighand->siglock);
                sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
-               sigaddset(¤t->blocked,sig);
+               if (!(ka->sa.sa_flags & SA_NODEFER))
+                       sigaddset(¤t->blocked,sig);
                recalc_sigpending();
                spin_unlock_irq(¤t->sighand->siglock);
        }
 
        if (ka.sa.sa_flags & SA_ONESHOT)
                ka.sa.sa_handler = SIG_DFL;
 
-       if (!(ka.sa.sa_flags & SA_NODEFER)) {
-               spin_lock_irq(¤t->sighand->siglock);
-               sigorsets(¤t->blocked, ¤t->blocked, &ka.sa.sa_mask);
+       spin_lock_irq(¤t->sighand->siglock);
+       sigorsets(¤t->blocked, ¤t->blocked, &ka.sa.sa_mask);
+       if (!(ka.sa.sa_flags & SA_NODEFER))
                sigaddset(¤t->blocked, signr);
-               recalc_sigpending();
-               spin_unlock_irq(¤t->sighand->siglock);
-       }
+       recalc_sigpending();
+       spin_unlock_irq(¤t->sighand->siglock);
        return 1;
 }