X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udevd.c;h=e4880c981488a1db29112351db15d6bbf2a44d4f;hb=9ae611be33c29d5d9b51bca281408d407dcf007f;hp=79d3e825501a51ae1de3967da0277893091b061d;hpb=40caaeec51f5d8f65245932a85396ac85265cbe5;p=elogind.git diff --git a/udevd.c b/udevd.c index 79d3e8255..e4880c981 100644 --- a/udevd.c +++ b/udevd.c @@ -113,7 +113,7 @@ static void msg_queue_insert(struct uevent_msg *msg) if (msg->seqnum == 0) { dbg("no SEQNUM, move straight to the exec queue"); - list_add(&msg->node, &exec_list); + list_add_tail(&msg->node, &exec_list); run_exec_q = 1; return; } @@ -777,7 +777,23 @@ int main(int argc, char *argv[], char *envp[]) int daemonize = 0; int i; + /* set std fd's to /dev/null, if the kernel forks us, we don't have them at all */ + devnull = open("/dev/null", O_RDWR); + if (devnull >= 0) { + if (devnull != STDIN_FILENO) + dup2(devnull, STDIN_FILENO); + if (devnull != STDOUT_FILENO) + dup2(devnull, STDOUT_FILENO); + if (devnull != STDERR_FILENO) + dup2(devnull, STDERR_FILENO); + if (devnull > STDERR_FILENO) + close(devnull); + } + logging_init("udevd"); + if (devnull < 0) + err("fatal, could not open /dev/null"); + udev_init_config(); dbg("version %s", UDEV_VERSION); @@ -825,16 +841,6 @@ int main(int argc, char *argv[], char *envp[]) /* set a reasonable scheduling priority for the daemon */ setpriority(PRIO_PROCESS, 0, UDEVD_PRIORITY); - /* Set fds to dev/null */ - devnull = open( "/dev/null", O_RDWR ); - if (devnull > 0) { - dup2(devnull, STDIN_FILENO); - dup2(devnull, STDOUT_FILENO); - dup2(devnull, STDERR_FILENO); - close(devnull); - } else - err("error opening /dev/null %s", strerror(errno)); - /* setup signal handler pipe */ retval = pipe(pipefds); if (retval < 0) {