--- x/io_uring/cancel.c +++ y/io_uring/cancel.c @@ -294,6 +294,7 @@ int io_sync_cancel(struct io_ring_ctx *c mutex_unlock(&ctx->uring_lock); ret = io_run_task_work_sig(ctx); if (ret < 0) { + finish_wait(&ctx->cq_wait, &wait); mutex_lock(&ctx->uring_lock); break; }