• Lukas Czerner's avatar
    ext4: fix bitmap position validation · 22be37ac
    Lukas Czerner authored
    Currently in ext4_valid_block_bitmap() we expect the bitmap to be
    positioned anywhere between 0 and s_blocksize clusters, but that's
    wrong because the bitmap can be placed anywhere in the block group. This
    causes false positives when validating bitmaps on perfectly valid file
    system layouts. Fix it by checking whether the bitmap is within the group
    boundary.
    
    The problem can be reproduced using the following
    
    mkfs -t ext3 -E stride=256 /dev/vdb1
    mount /dev/vdb1 /mnt/test
    cd /mnt/test
    wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.16.3.tar.xz
    tar xf linux-4.16.3.tar.xz
    
    This will result in the warnings in the logs
    
    EXT4-fs error (device vdb1): ext4_validate_block_bitmap:399: comm tar: bg 84: block 2774529: invalid block bitmap
    
    [ Changed slightly for clarity and to not drop a overflow test -- TYT ]
    Signed-off-by: default avatarLukas Czerner <lczerner@redhat.com>
    Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    Reported-by: default avatarIlya Dryomov <idryomov@gmail.com>
    Fixes: 7dac4a17 ("ext4: add validity checks for bitmap block numbers")
    Cc: stable@vger.kernel.org
    22be37ac
balloc.c 25.9 KB