diff options
Diffstat (limited to 'fs/ext4/super.c')
| -rw-r--r-- | fs/ext4/super.c | 6 | 
1 files changed, 3 insertions, 3 deletions
| diff --git a/fs/ext4/super.c b/fs/ext4/super.c index ff1b764b0c0e..0c7c4adb664e 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -2391,7 +2391,7 @@ int ext4_alloc_flex_bg_array(struct super_block *sb, ext4_group_t ngroup)  {  	struct ext4_sb_info *sbi = EXT4_SB(sb);  	struct flex_groups **old_groups, **new_groups; -	int size, i; +	int size, i, j;  	if (!sbi->s_log_groups_per_flex)  		return 0; @@ -2412,8 +2412,8 @@ int ext4_alloc_flex_bg_array(struct super_block *sb, ext4_group_t ngroup)  					 sizeof(struct flex_groups)),  					 GFP_KERNEL);  		if (!new_groups[i]) { -			for (i--; i >= sbi->s_flex_groups_allocated; i--) -				kvfree(new_groups[i]); +			for (j = sbi->s_flex_groups_allocated; j < i; j++) +				kvfree(new_groups[j]);  			kvfree(new_groups);  			ext4_msg(sb, KERN_ERR,  				 "not enough memory for %d flex groups", size); |