From: Yu Watanabe Date: Tue, 18 Jul 2023 18:09:12 +0000 (+0900) Subject: udev: merge manager_clear_for_worker() with manager_free() X-Git-Tag: v255-rc1~870^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8ebc7314e83c3d98a519b702c05270870fb61c13;p=thirdparty%2Fsystemd.git udev: merge manager_clear_for_worker() with manager_free() The function manager_clear_for_worker() is now not called by workers, and only called from manager_free(). Let's merge them. This also drops unused Manager.rtnl, and outdated comment in event_free(). --- diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 8c0ceccfd9c..c93dc6905e4 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -51,7 +51,6 @@ #include "list.h" #include "main-func.h" #include "mkdir.h" -#include "netlink-util.h" #include "parse-util.h" #include "path-util.h" #include "pretty-print.h" @@ -104,8 +103,6 @@ typedef struct Manager { UdevRules *rules; Hashmap *properties; - sd_netlink *rtnl; - sd_device_monitor *monitor; UdevCtrl *ctrl; int worker_watch[2]; @@ -184,8 +181,6 @@ static Event *event_free(Event *event) { LIST_REMOVE(event, event->manager->events, event); sd_device_unref(event->dev); - /* Do not use sd_event_source_disable_unref() here, as this is called by both workers and the - * main process. */ sd_event_source_unref(event->retry_event_source); sd_event_source_unref(event->timeout_warning_event); sd_event_source_unref(event->timeout_event); @@ -222,43 +217,29 @@ static Worker *worker_free(Worker *worker) { DEFINE_TRIVIAL_CLEANUP_FUNC(Worker*, worker_free); DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(worker_hash_op, void, trivial_hash_func, trivial_compare_func, Worker, worker_free); -static void manager_clear_for_worker(Manager *manager) { - assert(manager); - - /* 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); - - manager->workers = hashmap_free(manager->workers); - event_queue_cleanup(manager, EVENT_UNDEF); - - manager->monitor = sd_device_monitor_unref(manager->monitor); - manager->ctrl = udev_ctrl_unref(manager->ctrl); - - manager->worker_watch[READ_END] = safe_close(manager->worker_watch[READ_END]); -} - static Manager* manager_free(Manager *manager) { if (!manager) return NULL; udev_builtin_exit(); - manager_clear_for_worker(manager); - - sd_netlink_unref(manager->rtnl); - hashmap_free_free_free(manager->properties); udev_rules_free(manager->rules); + hashmap_free(manager->workers); + event_queue_cleanup(manager, EVENT_UNDEF); + safe_close(manager->inotify_fd); safe_close_pair(manager->worker_watch); + sd_device_monitor_unref(manager->monitor); + udev_ctrl_unref(manager->ctrl); + + sd_event_source_unref(manager->inotify_event); + sd_event_source_unref(manager->kill_workers_event); sd_event_source_unref(manager->memory_pressure_event_source); sd_event_source_unref(manager->sigrtmin18_event_source); + sd_event_unref(manager->event); free(manager->cgroup); return mfree(manager);