From: Christian Brauner Date: Fri, 20 Mar 2020 17:18:37 +0000 (+0100) Subject: ringbuf: fix cleanup operations X-Git-Tag: lxc-4.0.0~9^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=55cf04e373662f58bdb40196a9418c7cc1166430;p=thirdparty%2Flxc.git ringbuf: fix cleanup operations Signed-off-by: Christian Brauner --- diff --git a/src/lxc/ringbuf.c b/src/lxc/ringbuf.c index 0ece4fd26..cb7513a1a 100644 --- a/src/lxc/ringbuf.c +++ b/src/lxc/ringbuf.c @@ -20,9 +20,9 @@ int lxc_ringbuf_create(struct lxc_ringbuf *buf, size_t size) { + __do_close int memfd = -EBADF; char *tmp; int ret; - int memfd = -1; buf->size = size; buf->r_off = 0; @@ -63,14 +63,10 @@ int lxc_ringbuf_create(struct lxc_ringbuf *buf, size_t size) if (tmp == MAP_FAILED || tmp != (buf->addr + buf->size)) goto on_error; - close(memfd); - return 0; on_error: lxc_ringbuf_release(buf); - if (memfd >= 0) - close(memfd); return -1; } diff --git a/src/lxc/ringbuf.h b/src/lxc/ringbuf.h index 49041811f..dbbc7daca 100644 --- a/src/lxc/ringbuf.h +++ b/src/lxc/ringbuf.h @@ -36,7 +36,8 @@ extern int lxc_ringbuf_read(struct lxc_ringbuf *buf, char *out, size_t *len); static inline void lxc_ringbuf_release(struct lxc_ringbuf *buf) { - munmap(buf->addr, buf->size * 2); + if (buf->addr) + munmap(buf->addr, buf->size * 2); } static inline void lxc_ringbuf_clear(struct lxc_ringbuf *buf)