[Ocfs2-tools-devel] [PATCH 1/2 v2] o2image: 'blk' and 'ofs->ost' need to be freed when error happens in ocfs2_image_load_bitmap()

Joseph Qi jiangqi903 at gmail.com
Tue Apr 3 04:26:18 PDT 2018



On 18/4/3 18:58, piaojun wrote:
> 1. 'blk' should be freed if ocfs2_image_alloc_bitmap() failed.
> 2. 'ofs->ost' should be freed when ocfs2_malloc_block() failed.
> 
> Signed-off-by: Jun Piao <piaojun at huawei.com>

Acked-by: Joseph Qi <jiangqi903 at gmail.com>
> ---
>  libocfs2/image.c | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/libocfs2/image.c b/libocfs2/image.c
> index 4ceab67..726d385 100644
> --- a/libocfs2/image.c
> +++ b/libocfs2/image.c
> @@ -166,7 +166,7 @@ errcode_t ocfs2_image_load_bitmap(ocfs2_filesys *ofs)
>  	int i, j, fd;
>  	ssize_t count;
>  	errcode_t ret;
> -	char *blk;
> +	char *blk = NULL;
> 
>  	ret = ocfs2_malloc0(sizeof(struct ocfs2_image_state), &ofs->ost);
>  	if (ret)
> @@ -175,7 +175,7 @@ errcode_t ocfs2_image_load_bitmap(ocfs2_filesys *ofs)
>  	ost = ofs->ost;
>  	ret = ocfs2_malloc_block(ofs->fs_io, &blk);
>  	if (ret)
> -		return ret;
> +		goto out;
> 
>  	/* read ocfs2 image header */
>  	ret = io_read_block(ofs->fs_io, 0, 1, blk);
> @@ -204,7 +204,7 @@ errcode_t ocfs2_image_load_bitmap(ocfs2_filesys *ofs)
> 
>  	ret = ocfs2_image_alloc_bitmap(ofs);
>  	if (ret)
> -		return ret;
> +		goto out;
> 
>  	/* load bitmap blocks ocfs2 image state */
>  	bits_set = 0;
> @@ -235,6 +235,10 @@ errcode_t ocfs2_image_load_bitmap(ocfs2_filesys *ofs)
>  out:
>  	if (blk)
>  		ocfs2_free(&blk);
> +	if (ret) {
> +		ocfs2_image_free_bitmap(ofs);
> +		ocfs2_free(&ofs->ost);
> +	}
>  	return ret;
>  }
> 



More information about the Ocfs2-tools-devel mailing list