From 5a73b25fd6673134328443af04afe7bde0060d72 Mon Sep 17 00:00:00 2001 From: "kay.sievers@vrfy.org" Date: Fri, 5 Nov 2004 13:16:32 +0100 Subject: [PATCH] [PATCH] Don't use any syslog() in signal handler, cause it may deadlock. --- udev.c | 5 +---- udev.h | 2 +- udevd.c | 9 ++------- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/udev.c b/udev.c index cac60fd93..780906052 100644 --- a/udev.c +++ b/udev.c @@ -65,14 +65,10 @@ static void asmlinkage sig_handler(int signum) switch (signum) { case SIGALRM: gotalarm = 1; - info("error: timeout reached, event probably not handled correctly"); break; case SIGINT: case SIGTERM: - udevdb_exit(); exit(20 + signum); - default: - dbg("unhandled signal %d", signum); } } @@ -148,6 +144,7 @@ int main(int argc, char *argv[], char *envp[]) /* set signal handlers */ act.sa_handler = (void (*) (int))sig_handler; sigemptyset (&act.sa_mask); + act.sa_flags = 0; /* alarm must not restart syscalls*/ sigaction(SIGALRM, &act, NULL); sigaction(SIGINT, &act, NULL); diff --git a/udev.h b/udev.h index f7a13a634..e8954338d 100644 --- a/udev.h +++ b/udev.h @@ -26,7 +26,7 @@ #include #include "libsysfs/sysfs/libsysfs.h" -#define ALARM_TIMEOUT 30 +#define ALARM_TIMEOUT 120 #define COMMENT_CHARACTER '#' #define NAME_SIZE 256 diff --git a/udevd.c b/udevd.c index 015083714..395cdca88 100644 --- a/udevd.c +++ b/udevd.c @@ -327,20 +327,15 @@ static void asmlinkage sig_handler(int signum) sigchilds_waiting = 1; goto do_write; break; - default: - dbg("unhandled signal %d", signum); - return; } - + do_write: /* if pipe is empty, write to pipe to force select to return * immediately when it gets called */ if (!sig_flag) { rc = write(pipefds[1],&signum,sizeof(signum)); - if (rc < 0) - dbg("unable to write to pipe"); - else + if (rc >= 0) sig_flag = 1; } } -- 2.30.2