diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 5f03a4fabeaac..845b8620afcf6 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -3794,6 +3794,11 @@ static ssize_t ext4_direct_IO_read(struct kiocb *iocb, struct iov_iter *iter) struct inode *inode = mapping->host; size_t count = iov_iter_count(iter); 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