Update of /cvsroot/linux-vax/kernel-2.5/arch/vax/kernel
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15117/arch/vax/kernel
Modified Files:
signal.c
Log Message:
Changes to signal handling in 2.6.9 to fix a race condition
Index: signal.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.5/arch/vax/kernel/signal.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- signal.c 7 Oct 2003 09:13:58 -0000 1.13
+++ signal.c 18 Nov 2004 09:29:32 -0000 1.14
@@ -593,11 +593,9 @@
*/
static inline void
-handle_signal(int canrestart, unsigned long sig, siginfo_t *info,
- sigset_t *oldset, struct pt_regs * regs)
+handle_signal(int canrestart, unsigned long sig, struct k_sigaction *ka,
+ siginfo_t *info, sigset_t *oldset, struct pt_regs * regs)
{
- struct k_sigaction *ka = ¤t->sighand->action[sig-1];
-
/* Are we from a system call? */
if (canrestart) {
/* If so, check system call restarting.. */
@@ -659,6 +657,8 @@
siginfo_t info;
int signr;
int canrestart;
+ struct k_sigaction ka;
+
/*
* We want the common case to go fast, which
* is why we may in certain cases get here from
@@ -677,10 +677,10 @@
oldset = ¤t->blocked;
- signr = get_signal_to_deliver(&info, regs, NULL);
+ signr = get_signal_to_deliver(&info, &ka, regs, NULL);
if (signr > 0) {
/* Whee! Actually deliver the signal. */
- handle_signal(canrestart, signr, &info, oldset, regs);
+ handle_signal(canrestart, signr, &ka, &info, oldset, regs);
return 1;
}
|