]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
io_uring/cmd: consolidate REQ_F_BUFFER_SELECT checks
authorCaleb Sander Mateos <csander@purestorage.com>
Thu, 21 Aug 2025 16:33:08 +0000 (10:33 -0600)
committerJens Axboe <axboe@kernel.dk>
Sun, 24 Aug 2025 17:41:12 +0000 (11:41 -0600)
io_uring_cmd_prep() checks that REQ_F_BUFFER_SELECT is set in the
io_kiocb's flags iff IORING_URING_CMD_MULTISHOT is set in the SQE's
uring_cmd_flags. Consolidate the IORING_URING_CMD_MULTISHOT and
!IORING_URING_CMD_MULTISHOT branches into a single check that the
IORING_URING_CMD_MULTISHOT flag matches the REQ_F_BUFFER_SELECT flag.

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

index c8fd204f6892b0b4b40caa171dc6da15e9deefb9..482cc5be1f8d3908b1f6036c80d36e3a3720b38a 100644 (file)
@@ -201,13 +201,9 @@ int io_uring_cmd_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
                req->buf_index = READ_ONCE(sqe->buf_index);
        }
 
-       if (ioucmd->flags & IORING_URING_CMD_MULTISHOT) {
-               if (!(req->flags & REQ_F_BUFFER_SELECT))
-                       return -EINVAL;
-       } else {
-               if (req->flags & REQ_F_BUFFER_SELECT)
-                       return -EINVAL;
-       }
+       if (!!(ioucmd->flags & IORING_URING_CMD_MULTISHOT) !=
+           !!(req->flags & REQ_F_BUFFER_SELECT))
+               return -EINVAL;
 
        ioucmd->cmd_op = READ_ONCE(sqe->cmd_op);