diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 63b53660dc5be442a0bfff04e0ad51a403a3a52c..0207579d7e044b415b86f77d5da3e2821fc00ebb 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -3422,7 +3422,7 @@ static int ext4_iomap_alloc(struct inode *inode, struct ext4_map_blocks *map, * i_disksize out to i_size. This could be beyond where direct I/O is * happening and thus expose allocated blocks to direct I/O reads. */ - else if ((map->m_lblk * (1 << blkbits)) >= i_size_read(inode)) + else if (((loff_t)map->m_lblk << blkbits) >= i_size_read(inode)) m_flags = EXT4_GET_BLOCKS_CREATE; else if (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) m_flags = EXT4_GET_BLOCKS_IO_CREATE_EXT;