Skip to content

Commit 4aed5b4

Browse files
isilenceaxboe
authored andcommitted
io_uring: add helper calculating region byte size
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>
1 parent 21bd7b1 commit 4aed5b4

2 files changed

Lines changed: 7 additions & 2 deletions

File tree

io_uring/memmap.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ static int io_region_init_ptr(struct io_mapped_region *mr)
134134
static int io_region_pin_pages(struct io_mapped_region *mr,
135135
struct io_uring_region_desc *reg)
136136
{
137-
unsigned long size = mr->nr_pages << PAGE_SHIFT;
137+
size_t size = io_region_size(mr);
138138
struct page **pages;
139139
int nr_pages;
140140

@@ -154,7 +154,7 @@ static int io_region_allocate_pages(struct io_mapped_region *mr,
154154
unsigned long mmap_offset)
155155
{
156156
gfp_t gfp = GFP_KERNEL_ACCOUNT | __GFP_ZERO | __GFP_NOWARN;
157-
size_t size = (size_t) mr->nr_pages << PAGE_SHIFT;
157+
size_t size = io_region_size(mr);
158158
unsigned long nr_allocated;
159159
struct page **pages;
160160

io_uring/memmap.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,9 @@ static inline void io_region_publish(struct io_ring_ctx *ctx,
4343
*dst_region = *src_region;
4444
}
4545

46+
static inline size_t io_region_size(struct io_mapped_region *mr)
47+
{
48+
return (size_t) mr->nr_pages << PAGE_SHIFT;
49+
}
50+
4651
#endif

0 commit comments

Comments
 (0)