]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
io_uring: add helper for *REGISTER_SEND_MSG_RING
authorPavel Begunkov <asml.silence@gmail.com>
Sun, 7 Sep 2025 23:02:58 +0000 (00:02 +0100)
committerJens Axboe <axboe@kernel.dk>
Mon, 8 Sep 2025 14:06:37 +0000 (08:06 -0600)
Move handling of IORING_REGISTER_SEND_MSG_RING into a separate function
in preparation to growing io_uring_register_blind().

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/register.c

index aa5f56ad83584c443620b50eccbd4bc0498a8eb1..50ce87928be03837880210dcd18dcceeabaa2d45 100644 (file)
@@ -874,6 +874,23 @@ struct file *io_uring_register_get_file(unsigned int fd, bool registered)
        return ERR_PTR(-EOPNOTSUPP);
 }
 
+static int io_uring_register_send_msg_ring(void __user *arg, unsigned int nr_args)
+{
+       struct io_uring_sqe sqe;
+
+       if (!arg || nr_args != 1)
+               return -EINVAL;
+       if (copy_from_user(&sqe, arg, sizeof(sqe)))
+               return -EFAULT;
+       /* no flags supported */
+       if (sqe.flags)
+               return -EINVAL;
+       if (sqe.opcode != IORING_OP_MSG_RING)
+               return -EINVAL;
+
+       return io_uring_sync_msg_ring(&sqe);
+}
+
 /*
  * "blind" registration opcodes are ones where there's no ring given, and
  * hence the source fd must be -1.
@@ -882,21 +899,9 @@ static int io_uring_register_blind(unsigned int opcode, void __user *arg,
                                   unsigned int nr_args)
 {
        switch (opcode) {
-       case IORING_REGISTER_SEND_MSG_RING: {
-               struct io_uring_sqe sqe;
-
-               if (!arg || nr_args != 1)
-                       return -EINVAL;
-               if (copy_from_user(&sqe, arg, sizeof(sqe)))
-                       return -EFAULT;
-               /* no flags supported */
-               if (sqe.flags)
-                       return -EINVAL;
-               if (sqe.opcode == IORING_OP_MSG_RING)
-                       return io_uring_sync_msg_ring(&sqe);
-               }
+       case IORING_REGISTER_SEND_MSG_RING:
+               return io_uring_register_send_msg_ring(arg, nr_args);
        }
-
        return -EINVAL;
 }