]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
io_uring: add macros for avaliable flags
authorPavel Begunkov <asml.silence@gmail.com>
Sun, 7 Sep 2025 23:02:59 +0000 (00:02 +0100)
committerJens Axboe <axboe@kernel.dk>
Mon, 8 Sep 2025 14:06:37 +0000 (08:06 -0600)
Add constants for supported setup / request / feature flags as well as
the feature mask. They'll be used in the next patch.

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/io_uring.c
io_uring/io_uring.h

index 20dfa5ef75dcca8898b2f06378b81a47283d408d..252a0021cd437772e2689928fb9acf13e1c6fa8e 100644 (file)
 #define SQE_COMMON_FLAGS (IOSQE_FIXED_FILE | IOSQE_IO_LINK | \
                          IOSQE_IO_HARDLINK | IOSQE_ASYNC)
 
-#define SQE_VALID_FLAGS        (SQE_COMMON_FLAGS | IOSQE_BUFFER_SELECT | \
-                       IOSQE_IO_DRAIN | IOSQE_CQE_SKIP_SUCCESS)
-
 #define IO_REQ_LINK_FLAGS (REQ_F_LINK | REQ_F_HARDLINK)
 
 #define IO_REQ_CLEAN_FLAGS (REQ_F_BUFFER_SELECTED | REQ_F_NEED_CLEANUP | \
@@ -3462,12 +3459,7 @@ SYSCALL_DEFINE6(io_uring_enter, unsigned int, fd, u32, to_submit,
        struct file *file;
        long ret;
 
-       if (unlikely(flags & ~(IORING_ENTER_GETEVENTS | IORING_ENTER_SQ_WAKEUP |
-                              IORING_ENTER_SQ_WAIT | IORING_ENTER_EXT_ARG |
-                              IORING_ENTER_REGISTERED_RING |
-                              IORING_ENTER_ABS_TIMER |
-                              IORING_ENTER_EXT_ARG_REG |
-                              IORING_ENTER_NO_IOWAIT)))
+       if (unlikely(flags & ~IORING_ENTER_FLAGS))
                return -EINVAL;
 
        /*
@@ -3875,15 +3867,7 @@ static __cold int io_uring_create(unsigned entries, struct io_uring_params *p,
        if (ret)
                goto err;
 
-       p->features = IORING_FEAT_SINGLE_MMAP | IORING_FEAT_NODROP |
-                       IORING_FEAT_SUBMIT_STABLE | IORING_FEAT_RW_CUR_POS |
-                       IORING_FEAT_CUR_PERSONALITY | IORING_FEAT_FAST_POLL |
-                       IORING_FEAT_POLL_32BITS | IORING_FEAT_SQPOLL_NONFIXED |
-                       IORING_FEAT_EXT_ARG | IORING_FEAT_NATIVE_WORKERS |
-                       IORING_FEAT_RSRC_TAGS | IORING_FEAT_CQE_SKIP |
-                       IORING_FEAT_LINKED_FILE | IORING_FEAT_REG_REG_RING |
-                       IORING_FEAT_RECVSEND_BUNDLE | IORING_FEAT_MIN_TIMEOUT |
-                       IORING_FEAT_RW_ATTR | IORING_FEAT_NO_IOWAIT;
+       p->features = IORING_FEAT_FLAGS;
 
        if (copy_to_user(params, p, sizeof(*p))) {
                ret = -EFAULT;
@@ -3948,18 +3932,8 @@ static long io_uring_setup(u32 entries, struct io_uring_params __user *params)
                        return -EINVAL;
        }
 
-       if (p.flags & ~(IORING_SETUP_IOPOLL | IORING_SETUP_SQPOLL |
-                       IORING_SETUP_SQ_AFF | IORING_SETUP_CQSIZE |
-                       IORING_SETUP_CLAMP | IORING_SETUP_ATTACH_WQ |
-                       IORING_SETUP_R_DISABLED | IORING_SETUP_SUBMIT_ALL |
-                       IORING_SETUP_COOP_TASKRUN | IORING_SETUP_TASKRUN_FLAG |
-                       IORING_SETUP_SQE128 | IORING_SETUP_CQE32 |
-                       IORING_SETUP_SINGLE_ISSUER | IORING_SETUP_DEFER_TASKRUN |
-                       IORING_SETUP_NO_MMAP | IORING_SETUP_REGISTERED_FD_ONLY |
-                       IORING_SETUP_NO_SQARRAY | IORING_SETUP_HYBRID_IOPOLL |
-                       IORING_SETUP_CQE_MIXED))
+       if (p.flags & ~IORING_SETUP_FLAGS)
                return -EINVAL;
-
        return io_uring_create(entries, &p, params);
 }
 
index fa8a66b34d4ef6353f74b9cf23788499653606c6..a1d8d69411ff51d286738322ff52dfa3149ecba1 100644 (file)
 #include <trace/events/io_uring.h>
 #endif
 
+#define IORING_FEAT_FLAGS (IORING_FEAT_SINGLE_MMAP |\
+                       IORING_FEAT_NODROP |\
+                       IORING_FEAT_SUBMIT_STABLE |\
+                       IORING_FEAT_RW_CUR_POS |\
+                       IORING_FEAT_CUR_PERSONALITY |\
+                       IORING_FEAT_FAST_POLL |\
+                       IORING_FEAT_POLL_32BITS |\
+                       IORING_FEAT_SQPOLL_NONFIXED |\
+                       IORING_FEAT_EXT_ARG |\
+                       IORING_FEAT_NATIVE_WORKERS |\
+                       IORING_FEAT_RSRC_TAGS |\
+                       IORING_FEAT_CQE_SKIP |\
+                       IORING_FEAT_LINKED_FILE |\
+                       IORING_FEAT_REG_REG_RING |\
+                       IORING_FEAT_RECVSEND_BUNDLE |\
+                       IORING_FEAT_MIN_TIMEOUT |\
+                       IORING_FEAT_RW_ATTR |\
+                       IORING_FEAT_NO_IOWAIT)
+
+#define IORING_SETUP_FLAGS (IORING_SETUP_IOPOLL |\
+                       IORING_SETUP_SQPOLL |\
+                       IORING_SETUP_SQ_AFF |\
+                       IORING_SETUP_CQSIZE |\
+                       IORING_SETUP_CLAMP |\
+                       IORING_SETUP_ATTACH_WQ |\
+                       IORING_SETUP_R_DISABLED |\
+                       IORING_SETUP_SUBMIT_ALL |\
+                       IORING_SETUP_COOP_TASKRUN |\
+                       IORING_SETUP_TASKRUN_FLAG |\
+                       IORING_SETUP_SQE128 |\
+                       IORING_SETUP_CQE32 |\
+                       IORING_SETUP_SINGLE_ISSUER |\
+                       IORING_SETUP_DEFER_TASKRUN |\
+                       IORING_SETUP_NO_MMAP |\
+                       IORING_SETUP_REGISTERED_FD_ONLY |\
+                       IORING_SETUP_NO_SQARRAY |\
+                       IORING_SETUP_HYBRID_IOPOLL |\
+                       IORING_SETUP_CQE_MIXED)
+
+#define IORING_ENTER_FLAGS (IORING_ENTER_GETEVENTS |\
+                       IORING_ENTER_SQ_WAKEUP |\
+                       IORING_ENTER_SQ_WAIT |\
+                       IORING_ENTER_EXT_ARG |\
+                       IORING_ENTER_REGISTERED_RING |\
+                       IORING_ENTER_ABS_TIMER |\
+                       IORING_ENTER_EXT_ARG_REG |\
+                       IORING_ENTER_NO_IOWAIT)
+
+
+#define SQE_VALID_FLAGS (IOSQE_FIXED_FILE |\
+                       IOSQE_IO_DRAIN |\
+                       IOSQE_IO_LINK |\
+                       IOSQE_IO_HARDLINK |\
+                       IOSQE_ASYNC |\
+                       IOSQE_BUFFER_SELECT |\
+                       IOSQE_CQE_SKIP_SUCCESS)
+
 enum {
        IOU_COMPLETE            = 0,