All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Begunkov <asml.silence@gmail.com>
To: David Hildenbrand <david@redhat.com>, io-uring@vger.kernel.org
Subject: Re: [PATCH v1 2/3] io_uring/rsrc: don't rely on user vaddr alignment
Date: Tue, 24 Jun 2025 13:54:32 +0100	[thread overview]
Message-ID: <9646ddb1-c7c2-4ea6-8357-e9ff38209c73@gmail.com> (raw)
In-Reply-To: <8d33d9b2-d0c5-4c71-8381-c70a0a4bb712@redhat.com>

On 6/24/25 13:42, David Hildenbrand wrote:
> On 24.06.25 12:35, Pavel Begunkov wrote:
>> There is no guaranteed alignment for user pointers, however the
>> calculation of an offset of the first page into a folio after
>> coalescing uses some weird bit mask logic, get rid of it.
>>
>> Cc: stable@vger.kernel.org
>> Reported-by: David Hildenbrand <david@redhat.com>
>> Fixes: a8edbb424b139 ("io_uring/rsrc: enable multi-hugepage buffer coalescing")
>> Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
>> ---
>>   io_uring/rsrc.c | 8 +++++++-
>>   io_uring/rsrc.h | 1 +
>>   2 files changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/io_uring/rsrc.c b/io_uring/rsrc.c
>> index e83a294c718b..5132f8df600f 100644
>> --- a/io_uring/rsrc.c
>> +++ b/io_uring/rsrc.c
>> @@ -734,6 +734,8 @@ bool io_check_coalesce_buffer(struct page **page_array, int nr_pages,
>>       data->nr_pages_mid = folio_nr_pages(folio);
>>       data->folio_shift = folio_shift(folio);
>> +    data->first_page_offset = page_array[0] - compound_head(page_array[0]);
> 
> Note: pointer arithmetic on "struct page" does not work reliably for very large folios (eg., 1 GiB hugetlb) in all configs (!CONFIG_SPARSEMEM_VMEMMAP)
> 
> I assume this can be
> 
> data->first_page_offset = folio_page_idx(folio, page_array[0]);

Yep, already changed it in v2

...>> diff --git a/io_uring/rsrc.h b/io_uring/rsrc.h
>> index 0d2138f16322..d823554a8817 100644
>> --- a/io_uring/rsrc.h
>> +++ b/io_uring/rsrc.h
>> @@ -49,6 +49,7 @@ struct io_imu_folio_data {
>>       unsigned int    nr_pages_mid;
>>       unsigned int    folio_shift;
>>       unsigned int    nr_folios;
>> +    unsigned long    first_page_offset;
> 
> Heh, is it actually "first_folio_offset" ?

It's an offset into the folio, or the offset of the page
in the folio, and first_folio_offset can also be interpreted
a wrong way. The usual naming problem

> Alternatively, call it "first_folio_page_idx" or sth like that and leave the shift to the user.

Let's do that

-- 
Pavel Begunkov


  reply	other threads:[~2025-06-24 12:53 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-24 10:35 [PATCH v1 0/3] io_uring mm related abuses Pavel Begunkov
2025-06-24 10:35 ` [PATCH v1 1/3] io_uring/rsrc: fix folio unpinning Pavel Begunkov
2025-06-24 11:57   ` David Hildenbrand
2025-06-24 12:08     ` Pavel Begunkov
2025-06-24 10:35 ` [PATCH v1 2/3] io_uring/rsrc: don't rely on user vaddr alignment Pavel Begunkov
2025-06-24 11:53   ` David Hildenbrand
2025-06-24 12:20     ` Pavel Begunkov
2025-06-24 12:26       ` David Hildenbrand
2025-06-24 12:37         ` Pavel Begunkov
2025-06-24 12:30       ` Pavel Begunkov
2025-06-24 12:42   ` David Hildenbrand
2025-06-24 12:54     ` Pavel Begunkov [this message]
2025-06-24 10:35 ` [PATCH v1 3/3] io_uring: don't assume uaddr alignment in io_vec_fill_bvec Pavel Begunkov
2025-06-24 10:38 ` [PATCH v1 0/3] io_uring mm related abuses Pavel Begunkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9646ddb1-c7c2-4ea6-8357-e9ff38209c73@gmail.com \
    --to=asml.silence@gmail.com \
    --cc=david@redhat.com \
    --cc=io-uring@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.