]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ublk: check cmd_op first
authorCaleb Sander Mateos <csander@purestorage.com>
Fri, 20 Jun 2025 15:09:57 +0000 (09:09 -0600)
committerJens Axboe <axboe@kernel.dk>
Mon, 30 Jun 2025 22:02:23 +0000 (16:02 -0600)
In preparation for skipping some of the other checks for certain IO
opcodes, move the cmd_op check earlier.

Signed-off-by: Caleb Sander Mateos <csander@purestorage.com>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20250620151008.3976463-4-csander@purestorage.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/ublk_drv.c

index 0ebf3bbb343fe2e61cf562f0526f62c544dc1a5a..cf550a56b19bb2e83b3a8fe67b013473b1af8c67 100644 (file)
@@ -2194,13 +2194,18 @@ static int __ublk_ch_uring_cmd(struct io_uring_cmd *cmd,
        struct ublk_io *io;
        u32 cmd_op = cmd->cmd_op;
        unsigned tag = ub_cmd->tag;
-       int ret = -EINVAL;
        struct request *req;
+       int ret;
 
        pr_devel("%s: received: cmd op %d queue %d tag %d result %d\n",
                        __func__, cmd->cmd_op, ub_cmd->q_id, tag,
                        ub_cmd->result);
 
+       ret = ublk_check_cmd_op(cmd_op);
+       if (ret)
+               goto out;
+
+       ret = -EINVAL;
        if (ub_cmd->q_id >= ub->dev_info.nr_hw_queues)
                goto out;
 
@@ -2233,11 +2238,6 @@ static int __ublk_ch_uring_cmd(struct io_uring_cmd *cmd,
                        ^ (_IOC_NR(cmd_op) == UBLK_IO_NEED_GET_DATA))
                goto out;
 
-       ret = ublk_check_cmd_op(cmd_op);
-       if (ret)
-               goto out;
-
-       ret = -EINVAL;
        switch (_IOC_NR(cmd_op)) {
        case UBLK_IO_REGISTER_IO_BUF:
                return ublk_register_io_buf(cmd, ubq, io, ub_cmd->addr, issue_flags);