From: Yu Watanabe Date: Tue, 18 Dec 2018 05:49:17 +0000 (+0900) Subject: udevd: use worker_free() on failure in worker_new() X-Git-Tag: v241-rc1~84^2~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1f3f6bd0078b9d76d5ed72b74b890ca5e3a1756c;p=thirdparty%2Fsystemd.git udevd: use worker_free() on failure in worker_new() Otherwise, worker_monitor may not unrefed correctly. --- diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 697506feaf5..33fc0b3c2cd 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);