From f777e745a7966ea52ef29f9e4edfdd16874cfe86 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 29 Mar 2022 12:14:40 +0900 Subject: [PATCH] udev: do not call sd_event_source_disable_unref() in workers for event sources created by the main process Fixes a bug introduced by 9612da361a825d70a9fd392f3ee5a53bf8896887. --- src/udev/udevd.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 67d7733be2..e39f99c152 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -210,8 +210,10 @@ DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(worker_hash_op, void, trivial_hash static void manager_clear_for_worker(Manager *manager) { assert(manager); - manager->inotify_event = sd_event_source_disable_unref(manager->inotify_event); - manager->kill_workers_event = sd_event_source_disable_unref(manager->kill_workers_event); + /* Do not use sd_event_source_disable_unref() here, as this is called by both workers and the + * main process. */ + manager->inotify_event = sd_event_source_unref(manager->inotify_event); + manager->kill_workers_event = sd_event_source_unref(manager->kill_workers_event); manager->event = sd_event_unref(manager->event);