From f9d22ec87081252eaa7509b8e232116c97205110 Mon Sep 17 00:00:00 2001 From: Ulrich Ölmann Date: Tue, 18 Dec 2018 14:57:57 +0100 Subject: state: backend_bucket_circular: fix memory leak MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This ports the following barebox commit: | commit 87a0df348347932a69c260d57184197a2cc24a58 | Author: Ulrich Ölmann | Date: Mon Oct 8 19:45:23 2018 +0200 | | state: backend_bucket_circular: fix memory leak | | Signed-off-by: Ulrich Ölmann | Signed-off-by: Sascha Hauer Signed-off-by: Ulrich Ölmann Signed-off-by: Roland Hieber --- src/barebox-state/backend_bucket_circular.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/barebox-state/backend_bucket_circular.c b/src/barebox-state/backend_bucket_circular.c index f71e5c2..e06debb 100644 --- a/src/barebox-state/backend_bucket_circular.c +++ b/src/barebox-state/backend_bucket_circular.c @@ -485,7 +485,8 @@ int state_backend_bucket_circular_create(struct device_d *dev, const char *path, circ->fd = open(path, O_RDWR); if (circ->fd < 0) { pr_err("Failed to open circular bucket '%s'\n", path); - return -errno; + ret = -errno; + goto out_free; } #endif @@ -494,7 +495,7 @@ int state_backend_bucket_circular_create(struct device_d *dev, const char *path, dev_info(dev, "Not using eraseblock %u, it is marked as bad (%d)\n", circ->eraseblock, ret); ret = -EIO; - goto out_free; + goto out_close; } circ->bucket.read = state_backend_bucket_circular_read; @@ -504,13 +505,15 @@ int state_backend_bucket_circular_create(struct device_d *dev, const char *path, ret = state_backend_bucket_circular_init(*bucket); if (ret) - goto out_free; + goto out_close; return 0; -out_free: +out_close: #ifndef __BAREBOX__ close(circ->fd); +out_free: + free(circ->mtd); #endif free(circ); -- cgit v1.2.3