lkml.org 
[lkml]   [2023]   [May]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: Extending page pinning into fs/direct-io.c
From
On 25.05.23 18:31, Linus Torvalds wrote:
> On Wed, May 24, 2023 at 1:47 AM David Howells <dhowells@redhat.com> wrote:
>>
>> True - but I was thinking of just treating the zero_page specially and never
>> hold a pin or a ref on it. It can be checked by address, e.g.:
>>
>> static inline void bio_release_page(struct bio *bio, struct page *page)
>> {
>> if (page == ZERO_PAGE(0))
>> return;
>
> That won't actually work.
>
> We do have cases that try to use the page coloring that we support.
>
> Admittedly it seems to be only rmda that does it directly with
> something like this:
>
> vmf->page = ZERO_PAGE(vmf->address);
>
> but you can get arbitrary zero pages by pinning or GUPing them from
> user space mappings.
>
> Now, the only architectures that *use* multiple zero pages are - I
> think - MIPS (including Loongarch) and s390.
>
> So it's rare, but it does happen.

I think the correct way to test for a zero page is
is_zero_pfn(page_to_pfn(page).

Using my_zero_pfn(vmf->address) in do_anonymous_page() these can easily
end up in any process.

--
Thanks,

David / dhildenb

\
 
 \ /
  Last update: 2023-05-25 18:47    [W:0.148 / U:0.604 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site