Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
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;
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;
}
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)