X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fx86_64%2Fkernel%2Fsignal.c;h=5876df116c9225ef449e58a3d06e3de9b66c6445;hb=987b0145d94eecf292d8b301228356f44611ab7c;hp=e5f5ce7909a32e6e0cc3e56bb8b48c1dc7882d1d;hpb=f7ed79d23a47594e7834d66a8f14449796d4f3e6;p=linux-2.6.git diff --git a/arch/x86_64/kernel/signal.c b/arch/x86_64/kernel/signal.c index e5f5ce790..5876df116 100644 --- a/arch/x86_64/kernel/signal.c +++ b/arch/x86_64/kernel/signal.c @@ -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 = ¤t->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 */