From c148bb7d9ff5983a4286a9804affca855aa7defc Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Wed, 15 Apr 2020 13:56:24 +0200 Subject: [PATCH] zfs: fix resource leak Fixes: Coverity 1461730. Signed-off-by: Christian Brauner --- src/lxc/storage/zfs.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/lxc/storage/zfs.c b/src/lxc/storage/zfs.c index 4cc171fd8..ee9e32d0a 100644 --- a/src/lxc/storage/zfs.c +++ b/src/lxc/storage/zfs.c @@ -159,8 +159,8 @@ bool zfs_detect(const char *path) int zfs_mount(struct lxc_storage *bdev) { + __do_free char *mntdata = NULL; unsigned long mntflags = 0; - char *mntdata = NULL; int ret; size_t oldlen, newlen, totallen; char *tmp; @@ -176,7 +176,6 @@ int zfs_mount(struct lxc_storage *bdev) ret = parse_mntopts(bdev->mntopts, &mntflags, &mntdata); if (ret < 0) { ERROR("Failed to parse mount options"); - free(mntdata); return -22; } @@ -221,7 +220,6 @@ int zfs_mount(struct lxc_storage *bdev) tmp = realloc(mntdata, totallen); if (!tmp) { ERROR("Failed to reallocate memory"); - free(mntdata); return -1; } mntdata = tmp; @@ -229,12 +227,10 @@ int zfs_mount(struct lxc_storage *bdev) ret = snprintf((mntdata + oldlen), newlen, ",zfsutil,mntpoint=%s", src); if (ret < 0 || (size_t)ret >= newlen) { ERROR("Failed to create string"); - free(mntdata); return -1; } ret = mount(src, bdev->dest, "zfs", mntflags, mntdata); - free(mntdata); if (ret < 0 && errno != EBUSY) { SYSERROR("Failed to mount \"%s\" on \"%s\"", src, bdev->dest); return -1; -- 2.39.5