From: Dylan Yudaken <dylany@fb.com>
Date: Fri, 8 Jul 2022 18:18:35 +0000 (-0700)
Subject: io_uring: fix multishot ending when not polled
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=e2df2ccb753e3b598a9045760e79f1847f7b31cd;p=linux.git

io_uring: fix multishot ending when not polled

If multishot is not actually polling then return IOU_OK rather than the
result.
If the result was > 0 this will confuse things further up the callstack
which expect a return <= 0.

Fixes: 1300ebb20286 ("io_uring: multishot recv")
Signed-off-by: Dylan Yudaken <dylany@fb.com>
Link: https://lore.kernel.org/r/20220708181838.1495428-2-dylany@fb.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---

diff --git a/io_uring/net.c b/io_uring/net.c
index 185553174437f..eb939899e9c5a 100644
--- a/io_uring/net.c
+++ b/io_uring/net.c
@@ -506,6 +506,8 @@ static inline bool io_recv_finish(struct io_kiocb *req, int *ret, unsigned int c
 
 	if (req->flags & REQ_F_POLLED)
 		*ret = IOU_STOP_MULTISHOT;
+	else
+		*ret = IOU_OK;
 	return true;
 }