diff --git a/fs/exfat/inode.c b/fs/exfat/inode.c index 522edcbb2ce4..af8870145f67 100644 --- a/fs/exfat/inode.c +++ b/fs/exfat/inode.c @@ -534,7 +534,8 @@ static ssize_t exfat_direct_IO(struct kiocb *iocb, struct iov_iter *iter) size = pos + ret; /* zero the unwritten part in the partially written block */ - if (rw == READ && pos < ei->valid_size && ei->valid_size < size) { + if (ret == -EIOCBQUEUED && rw == READ && pos < ei->valid_size && + ei->valid_size < size) { iov_iter_revert(iter, size - ei->valid_size); iov_iter_zero(size - ei->valid_size, iter); }