[Ocfs2-tools-devel] [PATCH] o2image: 'blk' and 'ofs->ost' need to be freed when error happens in ocfs2_image_load_bitmap()
piaojun
piaojun at huawei.com
Tue Apr 3 03:38:11 PDT 2018
Hi Joseph,
On 2018/4/3 16:47, Joseph Qi wrote:
>
>
> On 18/4/3 15:49, 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>
>> ---
>> libocfs2/image.c | 9 +++++----
>> 1 file changed, 5 insertions(+), 4 deletions(-)
>>
>> diff --git a/libocfs2/image.c b/libocfs2/image.c
>> index 4ceab67..fb72bad 100644
>> --- a/libocfs2/image.c
>> +++ b/libocfs2/image.c
>> @@ -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;
>> @@ -233,8 +233,9 @@ errcode_t ocfs2_image_load_bitmap(ocfs2_filesys *ofs)
>> }
>>
>> out:
>> - if (blk)
>> - ocfs2_free(&blk);
>> + ocfs2_free(&blk);
>> + if (ret)
>> + ocfs2_free(&ofs->ost);
>> return ret;
>> }
>>
> I'm afraid there are 2 problems here.
> 1) blk may be not initialized, so we have to initialize it to NULL and it is better
> to check first when free.
Good catch, I will fix this problem in patch v2.
> 2) bitmap not be freed when read fails.
Yes, ocfs2_image_free_bitmap() need to be called before freeing 'ofs->ost'.
thanks,
Jun
>
> Thanks,
> Joseph
>
More information about the Ocfs2-tools-devel
mailing list