]> git.proxmox.com Git - mirror_lxc.git/commitdiff
ringbuf: fix cleanup operations
authorChristian Brauner <christian.brauner@ubuntu.com>
Fri, 20 Mar 2020 17:18:37 +0000 (18:18 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Fri, 20 Mar 2020 17:18:37 +0000 (18:18 +0100)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/ringbuf.c
src/lxc/ringbuf.h

index 0ece4fd26385d4f8361d6d43413eb40d9042e819..cb7513a1a6c3c346e8f28b7766fb90d1c89c0992 100644 (file)
@@ -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;
 }
 
index 49041811feb405f60b15cb60d1cc500b0aae5fef..dbbc7dacaed37187d8ff71d609a764ee1cd805e0 100644 (file)
@@ -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)