Messages in this thread Patch in this message | | | Date | Wed, 28 Jul 2004 23:50:27 +0200 (MEST) | From | Mikael Pettersson <> | Subject | [PATCH][2.6.8-rc2-mm1] x86_64 signal handling fix |
| |
The signal-race-fixes patch in 2.6.8-rc2-mm1 appears to have broken x86-64's ia32 emulation.
When forcing a SIGSEGV the old code updated "*ka", where ka was a pointer to current's k_sigaction for SIGSEGV. Now "ka_copy" points to a copy of that structure, so assigning "*ka_copy" doesn't do what we want. Instead do the assignment via current->... just like the normal signal delivery code does.
/Mikael Pettersson
diff -rupN linux-2.6.8-rc2-mm1/arch/x86_64/ia32/ia32_signal.c linux-2.6.8-rc2-mm1.x86_64-signal-fixes/arch/x86_64/ia32/ia32_signal.c --- linux-2.6.8-rc2-mm1/arch/x86_64/ia32/ia32_signal.c 2004-07-28 18:51:59.000000000 +0200 +++ linux-2.6.8-rc2-mm1.x86_64-signal-fixes/arch/x86_64/ia32/ia32_signal.c 2004-07-28 23:40:49.107995240 +0200 @@ -495,7 +495,7 @@ void ia32_setup_frame(int sig, struct k_ give_sigsegv: if (sig == SIGSEGV) - ka_copy->sa.sa_handler = SIG_DFL; + current->sighand->action[SIGSEGV-1].sa.sa_handler = SIG_DFL; signal_fault(regs,frame,"32bit signal deliver"); } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |