Messages in this thread | | | Date | Tue, 13 Dec 2022 12:40:26 +0100 | Subject | Re: [PATCH -next 1/8] mm: memory_hotplug: add pfn_to_online_folio() | From | David Hildenbrand <> |
| |
On 13.12.22 10:27, Kefeng Wang wrote: > Introduce a wrapper function pfn_to_online_folio(), which calls > pfn_to_online_page() and returns the folio of the page found, > or null if no page. > > Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com> > --- > include/linux/memory_hotplug.h | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h > index 9fcbf5706595..e841e4fb52a7 100644 > --- a/include/linux/memory_hotplug.h > +++ b/include/linux/memory_hotplug.h > @@ -265,6 +265,13 @@ static inline void pgdat_kswapd_unlock(pg_data_t *pgdat) {} > static inline void pgdat_kswapd_lock_init(pg_data_t *pgdat) {} > #endif /* ! CONFIG_MEMORY_HOTPLUG */ > > +static inline struct folio *pfn_to_online_folio(unsigned long pfn) > +{ > + struct page *page = pfn_to_online_page(pfn); > + > + return page ? page_folio(page) : NULL; > +}
Who guarantees that page_folio() is safe and stable at that point?
IIRC, that's very tricky. We could have the page concurrently getting freed and the folio dissolved.
-- Thanks,
David / dhildenb
| |