io_uring_classic_poll() special-cases only IORING_OP_URING_CMD for uring-cmd iopoll dispatch. IORING_OP_URING_CMD128 falls into the generic rw branch, which calls file->f_op->iopoll() after casting to struct io_rw. That is the wrong callback path for uring_cmd requests, which should go through ->uring_cmd_iopoll(). Treat IORING_OP_URING_CMD128 the same as IORING_OP_URING_CMD in io_uring_classic_poll(). Fixes: 1cba30bf9fdd ("io_uring: add support for IORING_SETUP_SQE_MIXED") Signed-off-by: Anuj Gupta --- io_uring/rw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/io_uring/rw.c b/io_uring/rw.c index b3971171c342..0eede0c09eaf 100644 --- a/io_uring/rw.c +++ b/io_uring/rw.c @@ -1254,7 +1254,7 @@ static int io_uring_classic_poll(struct io_kiocb *req, struct io_comp_batch *iob { struct file *file = req->file; - if (req->opcode == IORING_OP_URING_CMD) { + if (req->opcode == IORING_OP_URING_CMD || req->opcode == IORING_OP_URING_CMD128) { struct io_uring_cmd *ioucmd; ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd); -- 2.25.1