diff options
author | kay.sievers@vrfy.org <kay.sievers@vrfy.org> | 2004-06-07 02:56:47 -0700 |
---|---|---|
committer | Greg KH <gregkh@suse.de> | 2005-04-26 21:35:47 -0700 |
commit | 47bf9196c66a2a3dbb1b3a511dee933620616945 (patch) | |
tree | 593a3d8cc577f61d04507746653e5c045660e67f | |
parent | 0f36e68e8a28e02981b90a3a4712f198b58746ba (diff) |
[PATCH] fix udevd zombies
The recent version of klibc switched to -mregparm=3. This broke the
signal handlers parameter, cause it is called directly from the kernel
with the parameter on the stack not in a register.
-rw-r--r-- | udev.c | 6 | ||||
-rw-r--r-- | udevd.c | 5 |
2 files changed, 6 insertions, 5 deletions
@@ -55,7 +55,7 @@ void log_message(int level, const char *format, ...) } #endif -static void sig_handler(int signum) +__attribute__((regparm(0))) static void sig_handler(int signum) { switch (signum) { case SIGINT: @@ -63,7 +63,7 @@ static void sig_handler(int signum) udevdb_exit(); exit(20 + signum); default: - dbg("unhandled signal"); + dbg("unhandled signal %d", signum); } } @@ -128,7 +128,7 @@ static int udev_hotplug(void) goto exit; } - /* set up a default signal handler for now */ + /* set signal handlers */ act.sa_handler = sig_handler; sigemptyset (&act.sa_mask); act.sa_flags = SA_RESTART; @@ -306,9 +306,10 @@ skip: return; } -static void sig_handler(int signum) +__attribute__((regparm(0))) static void sig_handler(int signum) { int rc; + switch (signum) { case SIGINT: case SIGTERM: @@ -325,7 +326,7 @@ static void sig_handler(int signum) goto do_write; break; default: - dbg("unhandled signal"); + dbg("unhandled signal %d", signum); return; } |