Re: [PATCH] state: backend_bucket_circular: fix memory leak

2018-10-09 Thread Sascha Hauer
On Mon, Oct 08, 2018 at 07:45:23PM +0200, Ulrich Ölmann wrote:
> Signed-off-by: Ulrich Ölmann 
> ---
>  common/state/backend_bucket_circular.c | 11 +++
>  1 file changed, 7 insertions(+), 4 deletions(-)

Applied, thanks

Sascha

> 
> diff --git a/common/state/backend_bucket_circular.c 
> b/common/state/backend_bucket_circular.c
> index 0529421a2c2f..277b94d79737 100644
> --- a/common/state/backend_bucket_circular.c
> +++ b/common/state/backend_bucket_circular.c
> @@ -480,7 +480,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
>  
> @@ -489,7 +490,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;
> @@ -499,13 +500,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);
>  
> -- 
> 2.19.0
> 
> 
> ___
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox

-- 
Pengutronix e.K.   | |
Industrial Linux Solutions | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |

___
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox


[PATCH] state: backend_bucket_circular: fix memory leak

2018-10-08 Thread Ulrich Ölmann
Signed-off-by: Ulrich Ölmann 
---
 common/state/backend_bucket_circular.c | 11 +++
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/common/state/backend_bucket_circular.c 
b/common/state/backend_bucket_circular.c
index 0529421a2c2f..277b94d79737 100644
--- a/common/state/backend_bucket_circular.c
+++ b/common/state/backend_bucket_circular.c
@@ -480,7 +480,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
 
@@ -489,7 +490,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;
@@ -499,13 +500,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);
 
-- 
2.19.0


___
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox