The re-add handling isn't correct for the multi wait case, so let's just disable it for now explicitly until we can get that sorted out. Signed-off-by: Jens Axboe <axboe@xxxxxxxxx> --- fs/io_uring.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/fs/io_uring.c b/fs/io_uring.c index ab14692b05b4..87ce3dbcd4ca 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -4976,6 +4976,11 @@ static void __io_queue_proc(struct io_poll_iocb *poll, struct io_poll_table *pt, pt->error = -EINVAL; return; } + /* don't allow double poll use cases with multishot */ + if (!(req->poll.events & EPOLLONESHOT)) { + pt->error = -EINVAL; + return; + } /* double add on the same waitqueue head, ignore */ if (poll->head == head) return; -- 2.31.1