Commit 18595c0a authored by Jens Axboe's avatar Jens Axboe

io_uring: use unpin_user_pages() where appropriate

There are a few cases of open-rolled loops around unpin_user_page(), use
the generic helper instead.
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 87585b05
......@@ -2630,13 +2630,11 @@ void io_pages_unmap(void *ptr, struct page ***pages, unsigned short *npages,
static void io_pages_free(struct page ***pages, int npages)
{
struct page **page_array = *pages;
int i;
if (!page_array)
return;
for (i = 0; i < npages; i++)
unpin_user_page(page_array[i]);
unpin_user_pages(page_array, npages);
kvfree(page_array);
*pages = NULL;
}
......
......@@ -455,8 +455,8 @@ static int io_pin_pbuf_ring(struct io_uring_buf_reg *reg,
struct io_buffer_list *bl)
{
struct io_uring_buf_ring *br = NULL;
int nr_pages, ret, i;
struct page **pages;
int nr_pages, ret;
pages = io_pin_pages(reg->ring_addr,
flex_array_size(br, bufs, reg->ring_entries),
......@@ -492,8 +492,7 @@ static int io_pin_pbuf_ring(struct io_uring_buf_reg *reg,
bl->is_mmap = 0;
return 0;
error_unpin:
for (i = 0; i < nr_pages; i++)
unpin_user_page(pages[i]);
unpin_user_pages(pages, nr_pages);
kvfree(pages);
vunmap(br);
return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment