io_uring: improve poll warning handling
authorPavel Begunkov <asml.silence@gmail.com>
Wed, 30 Nov 2022 15:21:54 +0000 (15:21 +0000)
committerJens Axboe <axboe@kernel.dk>
Wed, 30 Nov 2022 17:27:22 +0000 (10:27 -0700)
Don't try to complete requests if their refs are broken and we've got
a warning, it's much better to drop them and potentially leaking than
double freeing.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/31edf9f96f05d03ab62c114508a231a2dce434cb.1669821213.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/poll.c

index ada0017e3d88a5c04ffdd206fa949c518bfa873d..8f16d2a48ff81ac029a621c4242cbac5395ab369 100644 (file)
@@ -249,7 +249,7 @@ static int io_poll_check_events(struct io_kiocb *req, bool *locked)
                if (unlikely(v != 1)) {
                        /* tw should be the owner and so have some refs */
                        if (WARN_ON_ONCE(!(v & IO_POLL_REF_MASK)))
-                               return IOU_POLL_DONE;
+                               return IOU_POLL_NO_ACTION;
                        if (v & IO_POLL_CANCEL_FLAG)
                                return -ECANCELED;
                        /*