Re: [PATCH v2 8/9] ext4: set the type of max_zeroout to unsigned int to avoid overflow

From: Jan Kara
Date: Thu Mar 14 2024 - 06:36:21 EST


On Tue 27-02-24 17:11:47, Baokun Li wrote:
> The max_zeroout is of type int and the s_extent_max_zeroout_kb is of
> type uint, and the s_extent_max_zeroout_kb can be freely modified via
> the sysfs interface. When the block size is 1024, max_zeroout may
> overflow, so declare it as unsigned int to avoid overflow.
>
> Signed-off-by: Baokun Li <libaokun1@xxxxxxxxxx>

Indeed. The patch looks good. Feel free to add:

Reviewed-by: Jan Kara <jack@xxxxxxx>

Honza

> ---
> fs/ext4/extents.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
> index e57054bdc5fd..e067f2dd0335 100644
> --- a/fs/ext4/extents.c
> +++ b/fs/ext4/extents.c
> @@ -3402,9 +3402,10 @@ static int ext4_ext_convert_to_initialized(handle_t *handle,
> struct ext4_extent *ex, *abut_ex;
> ext4_lblk_t ee_block, eof_block;
> unsigned int ee_len, depth, map_len = map->m_len;
> - int allocated = 0, max_zeroout = 0;
> int err = 0;
> int split_flag = EXT4_EXT_DATA_VALID2;
> + int allocated = 0;
> + unsigned int max_zeroout = 0;
>
> ext_debug(inode, "logical block %llu, max_blocks %u\n",
> (unsigned long long)map->m_lblk, map_len);
> --
> 2.31.1
>
--
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR