]> Gentwo Git Trees - linux/.git/commitdiff
io_uring: refactor rings_size nosqarray handling
authorPavel Begunkov <asml.silence@gmail.com>
Wed, 12 Nov 2025 12:45:53 +0000 (12:45 +0000)
committerJens Axboe <axboe@kernel.dk>
Thu, 13 Nov 2025 14:27:34 +0000 (07:27 -0700)
A preparation patch inversing the IORING_SETUP_NO_SQARRAY check, this
way there is only one successful return path from the function, which
will be helpful later.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/io_uring.c

index c7535159ad6b3b52645063a649dbb8573089df82..c1dc4bf3cf62e1dfc75eafe92993638cdd5c99c3 100644 (file)
@@ -2761,7 +2761,9 @@ unsigned long rings_size(unsigned int flags, unsigned int sq_entries,
                         unsigned int cq_entries, size_t *sq_offset)
 {
        struct io_rings *rings;
-       size_t off, sq_array_size;
+       size_t off;
+
+       *sq_offset = SIZE_MAX;
 
        off = struct_size(rings, cqes, cq_entries);
        if (off == SIZE_MAX)
@@ -2785,19 +2787,17 @@ unsigned long rings_size(unsigned int flags, unsigned int sq_entries,
                return SIZE_MAX;
 #endif
 
-       if (flags & IORING_SETUP_NO_SQARRAY) {
-               *sq_offset = SIZE_MAX;
-               return off;
-       }
-
-       *sq_offset = off;
+       if (!(flags & IORING_SETUP_NO_SQARRAY)) {
+               size_t sq_array_size;
 
-       sq_array_size = array_size(sizeof(u32), sq_entries);
-       if (sq_array_size == SIZE_MAX)
-               return SIZE_MAX;
+               *sq_offset = off;
 
-       if (check_add_overflow(off, sq_array_size, &off))
-               return SIZE_MAX;
+               sq_array_size = array_size(sizeof(u32), sq_entries);
+               if (sq_array_size == SIZE_MAX)
+                       return SIZE_MAX;
+               if (check_add_overflow(off, sq_array_size, &off))
+                       return SIZE_MAX;
+       }
 
        return off;
 }