summaryrefslogtreecommitdiff
path: root/io_uring/poll.c
diff options
context:
space:
mode:
authorPavel Begunkov <asml.silence@gmail.com>2025-07-16 19:20:17 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-07-24 09:53:12 +0300
commitd48845afa083bb606cb2f81e8bf542e224980620 (patch)
treefeac2575f0aaa4a2b6f0f2b6e4ab149c495a34fb /io_uring/poll.c
parentc855b9aa093a4fe2b58b11c2fbbb74144a7535be (diff)
downloadlinux-d48845afa083bb606cb2f81e8bf542e224980620.tar.xz
io_uring/poll: fix POLLERR handling
commit c7cafd5b81cc07fb402e3068d134c21e60ea688c upstream. 8c8492ca64e7 ("io_uring/net: don't retry connect operation on EPOLLERR") is a little dirty hack that 1) wrongfully assumes that POLLERR equals to a failed request, which breaks all POLLERR users, e.g. all error queue recv interfaces. 2) deviates the connection request behaviour from connect(2), and 3) racy and solved at a wrong level. Nothing can be done with 2) now, and 3) is beyond the scope of the patch. At least solve 1) by moving the hack out of generic poll handling into io_connect(). Cc: stable@vger.kernel.org Fixes: 8c8492ca64e79 ("io_uring/net: don't retry connect operation on EPOLLERR") Signed-off-by: Pavel Begunkov <asml.silence@gmail.com> Link: https://lore.kernel.org/r/3dc89036388d602ebd84c28e5042e457bdfc952b.1752682444.git.asml.silence@gmail.com Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'io_uring/poll.c')
-rw-r--r--io_uring/poll.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/io_uring/poll.c b/io_uring/poll.c
index 2390bf5f1710..65935ec8de89 100644
--- a/io_uring/poll.c
+++ b/io_uring/poll.c
@@ -308,8 +308,6 @@ static int io_poll_check_events(struct io_kiocb *req, struct io_tw_state *ts)
return IOU_POLL_REISSUE;
}
}
- if (unlikely(req->cqe.res & EPOLLERR))
- req_set_fail(req);
if (req->apoll_events & EPOLLONESHOT)
return IOU_POLL_DONE;