History

io_uring: clear ->async_data as part of normal init

Opcode handlers like POLL_ADD will use ->async_data as the pointer for double poll handling, which is a bit different than the usual case where it's strictly gated by the REQ_F_ASYNC_DATA flag. Be a bit more proactive in handling ->async_data, and clear it to NULL as part of regular init. Init is touching that cacheline anyway, so might as well clear it.

Jens Axboe committed 1 year ago

Commit e4e6aae1 parent 508c1311 file · +1 −0Browse files

Unified · Split

io_uring/io_uring.c+1−0
@@ -2119,6 +2119,7 @@ static int io_init_req(struct io_ring_ctx *ctx, struct io_kiocb *req, · 2118 unmodified lines
2119 req->file = NULL;2119 req->file = NULL;
2120 req->tctx = current->io_uring;2120 req->tctx = current->io_uring;
2121 req->cancel_seq_set = false;2121 req->cancel_seq_set = false;
2122 req->async_data = NULL;
2122 2123
2123 if (unlikely(opcode >= IORING_OP_LAST)) {2124 if (unlikely(opcode >= IORING_OP_LAST)) {
2124 req->opcode = 0;2125 req->opcode = 0;