From: kay.sievers@vrfy.org Date: Mon, 7 Jun 2004 09:56:47 +0000 (-0700) Subject: [PATCH] fix udevd zombies X-Git-Tag: 026~1 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=47bf9196c66a2a3dbb1b3a511dee933620616945;p=elogind.git [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. --- diff --git a/udev.c b/udev.c index 192bed97d..eb21f7546 100644 --- a/udev.c +++ b/udev.c @@ -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; diff --git a/udevd.c b/udevd.c index 5756b4612..e0c5bf5c7 100644 --- a/udevd.c +++ b/udevd.c @@ -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; }