summaryrefslogtreecommitdiff
path: root/io_uring
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2024-03-14 00:01:03 +0300
committerJens Axboe <axboe@kernel.dk>2024-04-15 17:10:26 +0300
commit18595c0a58ae29ac6a996c5b664610119b73182d (patch)
tree6add63bea7134e2584d1843b3fefbc49440e040e /io_uring
parent87585b05757dc70545efb434669708d276125559 (diff)
downloadlinux-18595c0a58ae29ac6a996c5b664610119b73182d.tar.xz
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: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'io_uring')
-rw-r--r--io_uring/io_uring.c4
-rw-r--r--io_uring/kbuf.c5
2 files changed, 3 insertions, 6 deletions
diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c
index 50e859da59e1..37066ea98f0b 100644
--- a/io_uring/io_uring.c
+++ b/io_uring/io_uring.c
@@ -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;
}
diff --git a/io_uring/kbuf.c b/io_uring/kbuf.c
index 820ac599d003..10d5c98c1c56 100644
--- a/io_uring/kbuf.c
+++ b/io_uring/kbuf.c
@@ -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;