|
From: Kenn H. <ke...@us...> - 2004-11-18 09:29:40
|
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; } |