]> Gentwo Git Trees - linux/.git/commitdiff
io_uring: add helper calculating region byte size
authorPavel Begunkov <asml.silence@gmail.com>
Mon, 10 Nov 2025 13:04:49 +0000 (13:04 +0000)
committerJens Axboe <axboe@kernel.dk>
Tue, 11 Nov 2025 14:53:33 +0000 (07:53 -0700)
There has been type related issues with region size calculation, add an
utility helper function that returns the size and handles type
conversions right.

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

index 24da17a5f08f9738990c03bc521d06044e59fb9e..dc4bfc5b6fb8125bbd4577bfbd76cbd078a86fdc 100644 (file)
@@ -134,7 +134,7 @@ static int io_region_init_ptr(struct io_mapped_region *mr)
 static int io_region_pin_pages(struct io_mapped_region *mr,
                               struct io_uring_region_desc *reg)
 {
-       unsigned long size = mr->nr_pages << PAGE_SHIFT;
+       size_t size = io_region_size(mr);
        struct page **pages;
        int nr_pages;
 
@@ -154,7 +154,7 @@ static int io_region_allocate_pages(struct io_mapped_region *mr,
                                    unsigned long mmap_offset)
 {
        gfp_t gfp = GFP_KERNEL_ACCOUNT | __GFP_ZERO | __GFP_NOWARN;
-       size_t size = (size_t) mr->nr_pages << PAGE_SHIFT;
+       size_t size = io_region_size(mr);
        unsigned long nr_allocated;
        struct page **pages;
 
index a6c63ca2c6f1f33befe549e3371097f968fa7d97..a39d9e518905f760bb69b5d37d9892391fb937f7 100644 (file)
@@ -43,4 +43,9 @@ static inline void io_region_publish(struct io_ring_ctx *ctx,
        *dst_region = *src_region;
 }
 
+static inline size_t io_region_size(struct io_mapped_region *mr)
+{
+       return (size_t) mr->nr_pages << PAGE_SHIFT;
+}
+
 #endif