• Eric Sandeen's avatar
    isofs: reject hardware sector size > 2048 bytes · 09a4e0be
    Eric Sandeen authored
    The largest block size supported by isofs is ISOFS_BLOCK_SIZE (2048), but
    isofs_fill_super calls sb_min_blocksize and sets the blocksize to the
    device's logical block size if it's larger than what we ended up with after
    option parsing.
    
    If for some reason we try to mount a hard 4k device as an isofs filesystem,
    we'll set opt.blocksize to 4096, and when we try to read the superblock
    we found via:
    
            block = iso_blknum << (ISOFS_BLOCK_BITS - s->s_blocksize_bits)
    
    with s_blocksize_bits greater than ISOFS_BLOCK_BITS, we'll have a negative
    shift and the bread will fail somewhat cryptically:
    
      isofs_fill_super: bread failed, dev=sda, iso_blknum=17, block=-2147483648
    
    It seems best to just catch and clearly reject mounts of such a device.
    Reported-by: 's avatarBryan Gurney <bgurney@redhat.com>
    Signed-off-by: 's avatarEric Sandeen <sandeen@redhat.com>
    Signed-off-by: 's avatarJan Kara <jack@suse.cz>
    09a4e0be
inode.c 40.7 KB