[PATCH] uml: Move signal handlers to arch code
Have most signals go through an arch-provided handler which recovers the sigcontext and then calls a generic handler. This replaces the ARCH_GET_SIGCONTEXT macro, which was somewhat fragile. On x86_64, recovering %rdx (which holds the sigcontext pointer) must be the first thing that happens. sig_handler duly invokes that first, but there is no guarantee that I can see that instructions won't be reordered such that %rdx is used before that. Having the arch provide the handler seems much more robust. Some signals in some parts of UML require their own handlers - these places don't call set_handler any more. They call sigaction or signal themselves. Signed-off-by: Jeff Dike <jdike@addtoit.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
committed by
Linus Torvalds
parent
19bdf0409f
commit
4b84c69b5f
15
arch/um/os-Linux/sys-i386/signal.c
Normal file
15
arch/um/os-Linux/sys-i386/signal.c
Normal file
@@ -0,0 +1,15 @@
|
||||
/*
|
||||
* Copyright (C) 2006 Jeff Dike (jdike@addtoit.com)
|
||||
* Licensed under the GPL
|
||||
*/
|
||||
|
||||
#include <signal.h>
|
||||
|
||||
extern void (*handlers[])(int sig, struct sigcontext *sc);
|
||||
|
||||
void hard_handler(int sig)
|
||||
{
|
||||
struct sigcontext *sc = (struct sigcontext *) (&sig + 1);
|
||||
|
||||
(*handlers[sig])(sig, sc);
|
||||
}
|
Reference in New Issue
Block a user