io_uring/cancel: re-grab ctx mutex after finishing wait
authorJens Axboe <axboe@kernel.dk>
Wed, 21 Dec 2022 14:11:33 +0000 (07:11 -0700)
committerJens Axboe <axboe@kernel.dk>
Wed, 21 Dec 2022 20:31:40 +0000 (13:31 -0700)
commit23fffb2f09ce1145cbd751801d45ba74acaa6542
treee671424b224afc2f9a8500e87fdfd0f3cefe42c6
parent52ea806ad983490b3132a9e526e11a10dc2fd10c
io_uring/cancel: re-grab ctx mutex after finishing wait

If we have a signal pending during cancelations, it'll cause the
task_work run to return an error. Since we didn't run task_work, the
current task is left in TASK_INTERRUPTIBLE state when we need to
re-grab the ctx mutex, and the kernel will rightfully complain about
that.

Move the lock grabbing for the error cases outside the loop to avoid
that issue.

Reported-by: syzbot+7df055631cd1be4586fd@syzkaller.appspotmail.com
Link: https://lore.kernel.org/io-uring/0000000000003a14a905f05050b0@google.com/
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/cancel.c