From 1f3f6bd0078b9d76d5ed72b74b890ca5e3a1756c Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 18 Dec 2018 14:49:17 +0900 Subject: [PATCH] udevd: use worker_free() on failure in worker_new() Otherwise, worker_monitor may not unrefed correctly. --- src/udev/udevd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 697506feaf..33fc0b3c2c 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -186,6 +186,8 @@ static void worker_free(struct worker *worker) { free(worker); } +DEFINE_TRIVIAL_CLEANUP_FUNC(struct worker *, worker_free); + static void manager_workers_free(Manager *manager) { struct worker *worker; Iterator i; @@ -199,7 +201,7 @@ static void manager_workers_free(Manager *manager) { } static int worker_new(struct worker **ret, Manager *manager, sd_device_monitor *worker_monitor, pid_t pid) { - _cleanup_free_ struct worker *worker = NULL; + _cleanup_(worker_freep) struct worker *worker = NULL; int r; assert(ret);