diff options
Diffstat (limited to 'fs/ext4/mballoc.c')
| -rw-r--r-- | fs/ext4/mballoc.c | 14 | 
1 files changed, 6 insertions, 8 deletions
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index f8b27bf80ac..526e5535860 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -2805,8 +2805,7 @@ ext4_mb_mark_diskspace_used(struct ext4_allocation_context *ac,  	}  	len = ext4_free_group_clusters(sb, gdp) - ac->ac_b_ex.fe_len;  	ext4_free_group_clusters_set(sb, gdp, len); -	ext4_block_bitmap_csum_set(sb, ac->ac_b_ex.fe_group, gdp, bitmap_bh, -				   EXT4_BLOCKS_PER_GROUP(sb) / 8); +	ext4_block_bitmap_csum_set(sb, ac->ac_b_ex.fe_group, gdp, bitmap_bh);  	ext4_group_desc_csum_set(sb, ac->ac_b_ex.fe_group, gdp);  	ext4_unlock_group(sb, ac->ac_b_ex.fe_group); @@ -4666,8 +4665,7 @@ do_more:  	ret = ext4_free_group_clusters(sb, gdp) + count_clusters;  	ext4_free_group_clusters_set(sb, gdp, ret); -	ext4_block_bitmap_csum_set(sb, block_group, gdp, bitmap_bh, -				   EXT4_BLOCKS_PER_GROUP(sb) / 8); +	ext4_block_bitmap_csum_set(sb, block_group, gdp, bitmap_bh);  	ext4_group_desc_csum_set(sb, block_group, gdp);  	ext4_unlock_group(sb, block_group);  	percpu_counter_add(&sbi->s_freeclusters_counter, count_clusters); @@ -4811,8 +4809,7 @@ int ext4_group_add_blocks(handle_t *handle, struct super_block *sb,  	mb_free_blocks(NULL, &e4b, bit, count);  	blk_free_count = blocks_freed + ext4_free_group_clusters(sb, desc);  	ext4_free_group_clusters_set(sb, desc, blk_free_count); -	ext4_block_bitmap_csum_set(sb, block_group, desc, bitmap_bh, -				   EXT4_BLOCKS_PER_GROUP(sb) / 8); +	ext4_block_bitmap_csum_set(sb, block_group, desc, bitmap_bh);  	ext4_group_desc_csum_set(sb, block_group, desc);  	ext4_unlock_group(sb, block_group);  	percpu_counter_add(&sbi->s_freeclusters_counter, @@ -4993,8 +4990,9 @@ int ext4_trim_fs(struct super_block *sb, struct fstrim_range *range)  	minlen = EXT4_NUM_B2C(EXT4_SB(sb),  			      range->minlen >> sb->s_blocksize_bits); -	if (unlikely(minlen > EXT4_CLUSTERS_PER_GROUP(sb)) || -	    unlikely(start >= max_blks)) +	if (minlen > EXT4_CLUSTERS_PER_GROUP(sb) || +	    start >= max_blks || +	    range->len < sb->s_blocksize)  		return -EINVAL;  	if (end >= max_blks)  		end = max_blks - 1;  |