mirror of https://github.com/torvalds/linux.git
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>
This commit is contained in:
parent
21bd7b14a3
commit
4aed5b4e6d
|
|
@ -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,
|
static int io_region_pin_pages(struct io_mapped_region *mr,
|
||||||
struct io_uring_region_desc *reg)
|
struct io_uring_region_desc *reg)
|
||||||
{
|
{
|
||||||
unsigned long size = mr->nr_pages << PAGE_SHIFT;
|
size_t size = io_region_size(mr);
|
||||||
struct page **pages;
|
struct page **pages;
|
||||||
int nr_pages;
|
int nr_pages;
|
||||||
|
|
||||||
|
|
@ -154,7 +154,7 @@ static int io_region_allocate_pages(struct io_mapped_region *mr,
|
||||||
unsigned long mmap_offset)
|
unsigned long mmap_offset)
|
||||||
{
|
{
|
||||||
gfp_t gfp = GFP_KERNEL_ACCOUNT | __GFP_ZERO | __GFP_NOWARN;
|
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;
|
unsigned long nr_allocated;
|
||||||
struct page **pages;
|
struct page **pages;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,4 +43,9 @@ static inline void io_region_publish(struct io_ring_ctx *ctx,
|
||||||
*dst_region = *src_region;
|
*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
|
#endif
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue