static int io_poll_cancel(struct io_ring_ctx *ctx, __u64 sqe_addr)
{
	struct rb_node *p, *parent = NULL;
	struct io_kiocb *req;

	p = ctx->cancel_tree.rb_node;
	while (p) {
		parent = p;
		req = rb_entry(parent, struct io_kiocb, rb_node);
		if (sqe_addr < req->user_data) {
			p = p->rb_left;
		} else if (sqe_addr > req->user_data) {
			p = p->rb_right;
		} else {
			io_poll_remove_one(req);
			return 0;
		}
	}

	return -ENOENT;
}
static int io_poll_cancel(struct io_ring_ctx *ctx, __u64 sqe_addr)
{
	struct rb_node *p, *parent = NULL;
	struct io_kiocb *req;

	p = ctx->cancel_tree.rb_node;
	while (p) {
		parent = p;
		req = rb_entry(parent, struct io_kiocb, rb_node);
		if (sqe_addr < req->user_data) {
			p = p->rb_left;
		} else if (sqe_addr > req->user_data) {
			p = p->rb_right;
		} else {
			io_poll_remove_one(req);
			return 0;
		}
	}

	return -ENOENT;
}