[U-Boot] [PATCH v3 11/13] ext4: Fix memory leak in case of failure

Lukasz Majewski
2016-08-29T14:09:11Z

Hi Stefan,

> temp_ptr should always be freed, even if the function is left via
> goto fail.
>
> Signed-off-by: Stefan Br?ns <stefan.bruens@rwth-aachen.de>
> ---
> fs/ext4/ext4_write.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> v3: Patch added to series
>
> diff --git a/fs/ext4/ext4_write.c b/fs/ext4/ext4_write.c
> index 50c8415..5e208ef 100644
> --- a/fs/ext4/ext4_write.c
> +++ b/fs/ext4/ext4_write.c
> @@ -974,7 +974,6 @@ int ext4fs_write(const char *fname, unsigned char
> *buffer, sizeof(struct ext2_inode));
> if (ext4fs_put_metadata(temp_ptr,
> parent_itable_blkno)) goto fail;
> - free(temp_ptr);
> } else {
> /*
> * If parent and child fall in same inode table block
> @@ -985,7 +984,6 @@ int ext4fs_write(const char *fname, unsigned char
> *buffer, gd_index--;
> if (ext4fs_put_metadata(temp_ptr, itable_blkno))
> goto fail;
> - free(temp_ptr);
> }
> ext4fs_update();
> ext4fs_deinit();
> @@ -996,6 +994,7 @@ int ext4fs_write(const char *fname, unsigned char
> *buffer, fs->curr_inode_no = 0;
> free(inode_buffer);
> free(g_parent_inode);
> + free(temp_ptr);
> g_parent_inode = NULL;
>
> return 0;
> @@ -1003,6 +1002,7 @@ fail:
> ext4fs_deinit();
> free(inode_buffer);
> free(g_parent_inode);
> + free(temp_ptr);
> g_parent_inode = NULL;
>
> return -1;

Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>

--
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group