udevd: use worker_free() on failure in worker_new()
Otherwise, worker_monitor may not unrefed correctly.
This commit is contained in:
parent
ee0b9e721a
commit
1f3f6bd007
|
@ -186,6 +186,8 @@ static void worker_free(struct worker *worker) {
|
||||||
free(worker);
|
free(worker);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFINE_TRIVIAL_CLEANUP_FUNC(struct worker *, worker_free);
|
||||||
|
|
||||||
static void manager_workers_free(Manager *manager) {
|
static void manager_workers_free(Manager *manager) {
|
||||||
struct worker *worker;
|
struct worker *worker;
|
||||||
Iterator i;
|
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) {
|
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;
|
int r;
|
||||||
|
|
||||||
assert(ret);
|
assert(ret);
|
||||||
|
|
Loading…
Reference in a new issue