[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <7fabe6ee-ba8f-6c48-c9f7-90982e2e258c@redhat.com>
Date: Tue, 18 Apr 2023 17:55:48 +0200
From: David Hildenbrand <david@...hat.com>
To: Lorenzo Stoakes <lstoakes@...il.com>, linux-mm@...ck.org,
linux-kernel@...r.kernel.org,
Andrew Morton <akpm@...ux-foundation.org>
Cc: Matthew Wilcox <willy@...radead.org>, Jens Axboe <axboe@...nel.dk>,
Pavel Begunkov <asml.silence@...il.com>,
io-uring@...r.kernel.org
Subject: Re: [PATCH v4 4/6] io_uring: rsrc: avoid use of vmas parameter in
pin_user_pages()
On 18.04.23 17:49, Lorenzo Stoakes wrote:
> We are shortly to remove pin_user_pages(), and instead perform the required
> VMA checks ourselves. In most cases there will be a single VMA so this
> should caues no undue impact on an already slow path.
>
> Doing this eliminates the one instance of vmas being used by
> pin_user_pages().
>
> Suggested-by: Matthew Wilcox (Oracle) <willy@...radead.org>
> Signed-off-by: Lorenzo Stoakes <lstoakes@...il.com>
> ---
> io_uring/rsrc.c | 55 ++++++++++++++++++++++++++++---------------------
> 1 file changed, 31 insertions(+), 24 deletions(-)
>
> diff --git a/io_uring/rsrc.c b/io_uring/rsrc.c
> index 7a43aed8e395..3a927df9d913 100644
> --- a/io_uring/rsrc.c
> +++ b/io_uring/rsrc.c
> @@ -1138,12 +1138,37 @@ static int io_buffer_account_pin(struct io_ring_ctx *ctx, struct page **pages,
> return ret;
> }
>
> +static int check_vmas_locked(unsigned long addr, unsigned long len)
TBH, the whole "_locked" suffix is a bit confusing.
I was wondering why you'd want to check whether the VMAs are locked ...
> +{
> + struct file *file;
> + VMA_ITERATOR(vmi, current->mm, addr);
> + struct vm_area_struct *vma = vma_next(&vmi);
> + unsigned long end = addr + len;
> +
> + if (WARN_ON_ONCE(!vma))
> + return -EINVAL;
> +
> + file = vma->vm_file;
> + if (file && !is_file_hugepages(file))
> + return -EOPNOTSUPP;
You'd now be rejecting vma_is_shmem() here, no?
--
Thanks,
David / dhildenb
Powered by blists - more mailing lists