From 47bf9196c66a2a3dbb1b3a511dee933620616945 Mon Sep 17 00:00:00 2001 From: "kay.sievers@vrfy.org" Date: Mon, 7 Jun 2004 02:56:47 -0700 Subject: [PATCH] [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. --- udev.c | 6 +++--- udevd.c | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) 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; } -- 2.30.2