From a04dc6376c624dabdf3578fbeef0f2a18f1d8cf2 Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Wed, 9 Dec 2020 11:16:10 +0100 Subject: [PATCH] lxclock: cleanup lxc_newlock() Signed-off-by: Christian Brauner --- src/lxc/lxclock.c | 38 +++++++++++++++----------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/src/lxc/lxclock.c b/src/lxc/lxclock.c index a77951a5b..a1361be40 100644 --- a/src/lxc/lxclock.c +++ b/src/lxc/lxclock.c @@ -17,6 +17,7 @@ #include "config.h" #include "log.h" #include "lxclock.h" +#include "memory_utils.h" #include "utils.h" #ifdef MUTEX_DEBUGGING @@ -149,35 +150,26 @@ static sem_t *lxc_new_unnamed_sem(void) struct lxc_lock *lxc_newlock(const char *lxcpath, const char *name) { - struct lxc_lock *l; + __do_free struct lxc_lock *l = NULL; - l = malloc(sizeof(*l)); + l = zalloc(sizeof(*l)); if (!l) - goto on_error; - - if (!name) { + return ret_set_errno(NULL, ENOMEM); + + if (name) { + l->type = LXC_LOCK_FLOCK; + l->u.f.fname = lxclock_name(lxcpath, name); + if (!l->u.f.fname) + return ret_set_errno(NULL, ENOMEM); + l->u.f.fd = -EBADF; + } else { l->type = LXC_LOCK_ANON_SEM; l->u.sem = lxc_new_unnamed_sem(); - if (!l->u.sem) { - free(l); - l = NULL; - } - - goto on_error; + if (!l->u.sem) + return ret_set_errno(NULL, ENOMEM); } - l->type = LXC_LOCK_FLOCK; - l->u.f.fname = lxclock_name(lxcpath, name); - if (!l->u.f.fname) { - free(l); - l = NULL; - goto on_error; - } - - l->u.f.fd = -1; - -on_error: - return l; + return move_ptr(l); } int lxclock(struct lxc_lock *l, int timeout) -- 2.47.2