summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--io_uring/rw.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/io_uring/rw.c b/io_uring/rw.c
index ed14322aadb9..1ae1e52ab4cb 100644
--- a/io_uring/rw.c
+++ b/io_uring/rw.c
@@ -764,10 +764,12 @@ int io_read(struct io_kiocb *req, unsigned int issue_flags)
iov_iter_restore(&s->iter, &s->iter_state);
ret2 = io_setup_async_rw(req, iovec, s, true);
- if (ret2)
- return ret2;
-
iovec = NULL;
+ if (ret2) {
+ ret = ret > 0 ? ret : ret2;
+ goto done;
+ }
+
io = req->async_data;
s = &io->s;
/*