Re: Signal handling possibly wrong
From: Chris Wright
Date: Tue Aug 09 2005 - 16:05:36 EST
* Chris Wright (chrisw@xxxxxxxx) wrote:
Actually that one broke a fix that I think Brodo discovered in the first
place with bogus stack frames.
Should be this one.
thanks,
-chris
---
Subject: [PATCH] fix SA_NODEFER signals to honor sa_mask
When receiving SA_NODEFER signal, kernel was inapproriately not applying
the sa_mask. As pointed out by Brodo Stroesser.
Signed-off-by: Chris Wright <chrisw@xxxxxxxx>
diff --git a/arch/i386/kernel/signal.c b/arch/i386/kernel/signal.c
--- a/arch/i386/kernel/signal.c
+++ b/arch/i386/kernel/signal.c
@@ -577,10 +577,11 @@ handle_signal(unsigned long sig, siginfo
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);
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/