• Tao Ma's avatar
    ext3: Fix an overflow in ext3_trim_fs. · 425fa410
    Tao Ma authored
    In a bs=4096 volume, if we call FITRIM with the following parameter as
    fstrim_range(start = 102400, len = 134144000, minlen = 10240), with the
    following code:
    if (len >= EXT3_BLOCKS_PER_GROUP(sb))
            len -= (EXT3_BLOCKS_PER_GROUP(sb) - first_block);
    else
            last_block = first_block + len;
    
    So if len < EXT3_BLOCKS_PER_GROUP while first_block + len >
    EXT3_BLOCKS_PER_GROUP, last_block will be set to an overflow value
    which exceeds EXT3_BLOCKS_PER_GROUP.
    
    This patch fixes it and adjusts len and last_block accordingly.
    
    Cc: Lukas Czerner <lczerner@redhat.com>
    Cc: Jan Kara <jack@suse.cz>
    Signed-off-by: default avatarTao Ma <boyu.mt@taobao.com>
    Signed-off-by: default avatarJan Kara <jack@suse.cz>
    425fa410
balloc.c 61.7 KB