From: Christian Brauner Date: Wed, 9 Dec 2020 10:16:10 +0000 (+0100) Subject: lxclock: cleanup lxc_newlock() X-Git-Tag: lxc-5.0.0~330^2~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a04dc6376c624dabdf3578fbeef0f2a18f1d8cf2;p=thirdparty%2Flxc.git lxclock: cleanup lxc_newlock() Signed-off-by: Christian Brauner --- 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)