X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fudev%2Fudevd.c;h=1c2d00f03b2e3af25c6dc4d12e90dc8759839d68;hb=b3e013148603aa670bc2c060ac63d48e54d76fc2;hp=fd799cc910cacd19b9d73002aef78f62616eb799;hpb=47e737dc13bf4251ae5a2249ec29b34503ed92e1;p=elogind.git diff --git a/src/udev/udevd.c b/src/udev/udevd.c index fd799cc91..1c2d00f03 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -314,10 +314,12 @@ static void worker_new(struct event *event) udev_device_unref(dev); dev = NULL; - udev_event_unref(udev_event); - - if (udev_event->sigterm) + if (udev_event->sigterm) { + udev_event_unref(udev_event); goto out; + } + + udev_event_unref(udev_event); /* wait for more device messages from main udevd, or term signal */ while (dev == NULL) { @@ -777,10 +779,11 @@ static void handle_signal(struct udev *udev, int signo) if (WIFEXITED(status)) { if (WEXITSTATUS(status) != 0) - log_error("worker [%u] exit with return code %i\n", pid, WEXITSTATUS(status)); + log_error("worker [%u] exit with return code %i\n", + pid, WEXITSTATUS(status)); } else if (WIFSIGNALED(status)) { log_error("worker [%u] terminated by signal %i (%s)\n", - pid, WTERMSIG(status), strsignal(WTERMSIG(status))); + pid, WTERMSIG(status), strsignal(WTERMSIG(status))); } else if (WIFSTOPPED(status)) { log_error("worker [%u] stopped\n", pid); } else if (WIFCONTINUED(status)) {