io_uring: explicitly count entries for poll reqs
authorPavel Begunkov <asml.silence@gmail.com>
Tue, 20 Jul 2021 09:50:43 +0000 (10:50 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 28 Jul 2021 12:35:46 +0000 (14:35 +0200)
commit9eef9029151c059ef5225d112f22569142e43f43
treeb54373fe7b99e56a5b4596687e6b6b3fc46efa25
parent1077e2b15283dff2f8c7dcc2ad934bccb8c617ad
io_uring: explicitly count entries for poll reqs

commit 68b11e8b1562986c134764433af64e97d30c9fc0 upstream.

If __io_queue_proc() fails to add a second poll entry, e.g. kmalloc()
failed, but it goes on with a third waitqueue, it may succeed and
overwrite the error status. Count the number of poll entries we added,
so we can set pt->error to zero at the beginning and find out when the
mentioned scenario happens.

Cc: stable@vger.kernel.org
Fixes: 18bceab101add ("io_uring: allow POLL_ADD with double poll_wait() users")
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/9d6b9e561f88bcc0163623b74a76c39f712151c3.1626774457.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/io_uring.c