fs, ext4: Fix potential memory leak in ext4_fill_super
PATCH 1/1 fs, ext4: Fix potential memory leak in ext4_fill_super
Under heavy memory pressure we may hit out of memory situation and as result kstrdup'ed options will not be freed. Fix it.
Signed-off-by Cyrill Gorcunov <[email protected]>
--- fs/ext4/super.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
fs/ext4/super.c +5 -3
@@ -2448,7 +2448,7 @@ static int ext4_fill_super(struct super_struct inode *root;char *cp;const char *descr; -int ret = -EINVAL ; +int ret = -ENOMEM ;int blocksize;unsigned int db_count;unsigned int i;
@@ -2459,13 +2459,13 @@ static int ext4_fill_super(struct super_ sbi =kzalloc (sizeof (*sbi),GFP_KERNEL );if (!sbi) -return -ENOMEM ; + goto out_free_orig; sbi->s_blockgroup_lock =kzalloc (sizeof (struct blockgroup_lock ),GFP_KERNEL );if (!sbi->s_blockgroup_lock) {kfree (sbi); -return -ENOMEM ; + goto out_free_orig; } sb->s_fs_info = sbi; sbi->s_mount_opt =0 ;
@@ -2482,6 +2482,7 @@ static int ext4_fill_super(struct super_for (cp = sb->s_id; (cp =strchr (cp,'/' ));) *cp ='!' ; + ret = -EINVAL ; blocksize =sb_min_blocksize (sb,EXT4_MIN_BLOCK_SIZE );if (!blocksize) {ext4_msg (sb,KERN_ERR ,"unable to set blocksize" );
@@ -3093,6 +3094,7 @@ out_fail:kfree (sbi->s_blockgroup_lock);kfree (sbi);lock_kernel (); +out_free_orig:kfree (orig_data);return ret; }
Ted Ts'o
maintainerQuoted 5 lines · Cyrill Gorcunov
Under heavy memory pressure we may hit out of memory situation and as result kstrdup'ed options will not be freed. Fix it.
Signed-off-by Cyrill Gorcunov <[email protected]>
Thanks, I've added this to the ext4 tree.
- Ted