From 87a40b6e037ce73cb7c3ac93b2a049d5299b92c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Br=C3=BCns?= Date: Tue, 6 Sep 2016 04:36:51 +0200 Subject: ext4: Fix memory leak in case of failure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit temp_ptr should always be freed, even if the function is left via goto fail. Signed-off-by: Stefan BrĂ¼ns Reviewed-by: Lukasz Majewski --- fs/ext4/ext4_write.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'fs/ext4') diff --git a/fs/ext4/ext4_write.c b/fs/ext4/ext4_write.c index 8554793f4f7..c55e2528e34 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; -- cgit v1.2.3