From: Tom Gundersen Date: Sun, 31 May 2015 21:52:53 +0000 (+0200) Subject: udevd: don't allocate sd_event object before fork X-Git-Tag: v221~234 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=49f997f3bcf3ff6a1d794dfb8fbd3907d653dc33;p=platform%2Fupstream%2Fsystemd.git udevd: don't allocate sd_event object before fork In daemon mode we would break sd-event as it cannot work accross different processes. Simply delay the allocation to after the fork. --- diff --git a/src/udev/udevd.c b/src/udev/udevd.c index c021e80..5717edd 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -1451,10 +1451,6 @@ static int manager_new(Manager **ret) { manager->worker_watch[WRITE_END] = -1; manager->worker_watch[READ_END] = -1; - r = sd_event_default(&manager->event); - if (r < 0) - return log_error_errno(errno, "could not allocate event loop: %m"); - manager->udev = udev_new(); if (!manager->udev) return log_error_errno(errno, "could not allocate udev context: %m"); @@ -1541,6 +1537,10 @@ static int manager_listen(Manager *manager) { sigfillset(&mask); sigprocmask(SIG_SETMASK, &mask, &manager->sigmask_orig); + r = sd_event_default(&manager->event); + if (r < 0) + return log_error_errno(errno, "could not allocate event loop: %m"); + r = sd_event_add_signal(manager->event, NULL, SIGINT, on_sigterm, manager); if (r < 0) return log_error_errno(r, "error creating sigint event source: %m");