linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / x86_64 / kernel / signal.c
index e5f5ce7..5876df1 100644 (file)
@@ -443,6 +443,9 @@ int do_signal(struct pt_regs *regs, sigset_t *oldset)
        if (!user_mode(regs))
                return 1;
 
+       if (try_to_freeze())
+               goto no_signal;
+
        if (!oldset)
                oldset = &current->blocked;
 
@@ -460,6 +463,7 @@ int do_signal(struct pt_regs *regs, sigset_t *oldset)
                return handle_signal(signr, &info, &ka, oldset, regs);
        }
 
+ no_signal:
        /* Did we come from a system call? */
        if ((long)regs->orig_rax >= 0) {
                /* Restart the system call - no handlers present */