diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index e4d3215d557d..da7616f6d5fe 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -3640,6 +3640,11 @@ static ssize_t ext4_direct_IO_read(struct kiocb *iocb, struct iov_iter *iter) struct address_space *mapping = iocb->ki_filp->f_mapping; struct inode *inode = mapping->host; ssize_t ret; + loff_t offset = iocb->ki_pos; + loff_t size = i_size_read(inode); + + if (offset >= size) + return 0; /* * Shared inode_lock is enough for us - it protects against concurrent