From 49f997f3bcf3ff6a1d794dfb8fbd3907d653dc33 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Sun, 31 May 2015 23:52:53 +0200 Subject: 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. --- src/udev/udevd.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/udev/udevd.c b/src/udev/udevd.c index c021e806a4..5717edd435 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"); -- cgit v1.2.3-54-g00ecf