io_uring: hold 'ctx' reference around task_work queue + execute
authorJens Axboe <axboe@kernel.dk>
Tue, 11 Aug 2020 14:04:14 +0000 (08:04 -0600)
committerJens Axboe <axboe@kernel.dk>
Tue, 11 Aug 2020 14:09:13 +0000 (08:09 -0600)
commit6d816e088c359866f9867057e04f244c608c42fe
tree2b27bdab84603e31011b7aeb19b95b1a18e6934c
parentefa8480a831673bb52400df9dbe5da0aacda97bf
io_uring: hold 'ctx' reference around task_work queue + execute

We're holding the request reference, but we need to go one higher
to ensure that the ctx remains valid after the request has finished.
If the ring is closed with pending task_work inflight, and the
given io_kiocb finishes sync during issue, then we need a reference
to the ring itself around the task_work execution cycle.

Cc: stable@vger.kernel.org # v5.7+
Reported-by: syzbot+9b260fc33297966f5a8e@syzkaller.appspotmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c