include/linux/page-flags.h | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)
In commit 73b3294b1152 ("mm: simplify folio_page() and folio_page_idx()")
we converted folio_page() into a static inline function. However
briefly afterwards in commit a847b17009ec ("mm: constify highmem related
functions for improved const-correctness") we had to add some nasty
const-away casting to make the compiler happy when checking const
correctness.
So let's just convert it back to a simple macro so the compiler can
check const correctness properly. There is the alternative of
using a _Generic() similar to page_folio(), but there is not a lot of
benefit compared to just using a simple macro.
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Michal Hocko <mhocko@suse.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
---
include/linux/page-flags.h | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
index 568011930e358..48e27768e7ba9 100644
--- a/include/linux/page-flags.h
+++ b/include/linux/page-flags.h
@@ -316,10 +316,7 @@ static __always_inline unsigned long _compound_head(const struct page *page)
* check that the page number lies within @folio; the caller is presumed
* to have a reference to the page.
*/
-static inline struct page *folio_page(const struct folio *folio, unsigned long n)
-{
- return (struct page *)(&folio->page + n);
-}
+#define folio_page(folio, n) (&(folio)->page + (n))
static __always_inline int PageTail(const struct page *page)
{
--
2.51.0
On 23/09/25 7:30 pm, David Hildenbrand wrote: > In commit 73b3294b1152 ("mm: simplify folio_page() and folio_page_idx()") > we converted folio_page() into a static inline function. However > briefly afterwards in commit a847b17009ec ("mm: constify highmem related > functions for improved const-correctness") we had to add some nasty > const-away casting to make the compiler happy when checking const > correctness. > > So let's just convert it back to a simple macro so the compiler can > check const correctness properly. There is the alternative of > using a _Generic() similar to page_folio(), but there is not a lot of > benefit compared to just using a simple macro. > > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> > Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com> > Cc: Vlastimil Babka <vbabka@suse.cz> > Cc: Mike Rapoport <rppt@kernel.org> > Cc: Suren Baghdasaryan <surenb@google.com> > Cc: Michal Hocko <mhocko@suse.com> > Signed-off-by: David Hildenbrand <david@redhat.com> > --- Reviewed-by: Dev Jain <dev.jain@arm.com>
On Wed, Sep 24, 2025 at 1:57 AM Dev Jain <dev.jain@arm.com> wrote: > > > On 23/09/25 7:30 pm, David Hildenbrand wrote: > > In commit 73b3294b1152 ("mm: simplify folio_page() and folio_page_idx()") > > we converted folio_page() into a static inline function. However > > briefly afterwards in commit a847b17009ec ("mm: constify highmem related > > functions for improved const-correctness") we had to add some nasty > > const-away casting to make the compiler happy when checking const > > correctness. > > > > So let's just convert it back to a simple macro so the compiler can > > check const correctness properly. There is the alternative of > > using a _Generic() similar to page_folio(), but there is not a lot of > > benefit compared to just using a simple macro. > > > > Cc: Andrew Morton <akpm@linux-foundation.org> > > Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> > > Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com> > > Cc: Vlastimil Babka <vbabka@suse.cz> > > Cc: Mike Rapoport <rppt@kernel.org> > > Cc: Suren Baghdasaryan <surenb@google.com> > > Cc: Michal Hocko <mhocko@suse.com> > > Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Suren Baghdasaryan <surenb@google.com> > > --- > > Reviewed-by: Dev Jain <dev.jain@arm.com> >
On Tue, 23 Sep 2025 16:00:58 +0200 David Hildenbrand <david@redhat.com> wrote: > In commit 73b3294b1152 ("mm: simplify folio_page() and folio_page_idx()") > we converted folio_page() into a static inline function. However > briefly afterwards in commit a847b17009ec ("mm: constify highmem related > functions for improved const-correctness") we had to add some nasty > const-away casting to make the compiler happy when checking const > correctness. > > So let's just convert it back to a simple macro so the compiler can > check const correctness properly. There is the alternative of > using a _Generic() similar to page_folio(), but there is not a lot of > benefit compared to just using a simple macro. > > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> > Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com> > Cc: Vlastimil Babka <vbabka@suse.cz> > Cc: Mike Rapoport <rppt@kernel.org> > Cc: Suren Baghdasaryan <surenb@google.com> > Cc: Michal Hocko <mhocko@suse.com> > Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: SeongJae Park <sj@kernel.org> Thanks, SJ [...]
On Wed, Sep 24, 2025 at 12:44 AM David Hildenbrand <david@redhat.com> wrote: > > In commit 73b3294b1152 ("mm: simplify folio_page() and folio_page_idx()") > we converted folio_page() into a static inline function. However > briefly afterwards in commit a847b17009ec ("mm: constify highmem related > functions for improved const-correctness") we had to add some nasty > const-away casting to make the compiler happy when checking const > correctness. > > So let's just convert it back to a simple macro so the compiler can > check const correctness properly. There is the alternative of > using a _Generic() similar to page_folio(), but there is not a lot of > benefit compared to just using a simple macro. > > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> > Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com> > Cc: Vlastimil Babka <vbabka@suse.cz> > Cc: Mike Rapoport <rppt@kernel.org> > Cc: Suren Baghdasaryan <surenb@google.com> > Cc: Michal Hocko <mhocko@suse.com> > Signed-off-by: David Hildenbrand <david@redhat.com> > --- LGTM. Feel free to add: Reviewed-by: Lance Yang <lance.yang@linux.dev> > include/linux/page-flags.h | 5 +---- > 1 file changed, 1 insertion(+), 4 deletions(-) > > diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h > index 568011930e358..48e27768e7ba9 100644 > --- a/include/linux/page-flags.h > +++ b/include/linux/page-flags.h > @@ -316,10 +316,7 @@ static __always_inline unsigned long _compound_head(const struct page *page) > * check that the page number lies within @folio; the caller is presumed > * to have a reference to the page. > */ > -static inline struct page *folio_page(const struct folio *folio, unsigned long n) > -{ > - return (struct page *)(&folio->page + n); > -} > +#define folio_page(folio, n) (&(folio)->page + (n)) > > static __always_inline int PageTail(const struct page *page) > { > -- > 2.51.0 > >
On Tue, Sep 23, 2025 at 04:00:58PM +0200, David Hildenbrand wrote: > In commit 73b3294b1152 ("mm: simplify folio_page() and folio_page_idx()") > we converted folio_page() into a static inline function. However > briefly afterwards in commit a847b17009ec ("mm: constify highmem related > functions for improved const-correctness") we had to add some nasty > const-away casting to make the compiler happy when checking const > correctness. > > So let's just convert it back to a simple macro so the compiler can > check const correctness properly. There is the alternative of > using a _Generic() similar to page_folio(), but there is not a lot of > benefit compared to just using a simple macro. > > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> > Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com> > Cc: Vlastimil Babka <vbabka@suse.cz> > Cc: Mike Rapoport <rppt@kernel.org> > Cc: Suren Baghdasaryan <surenb@google.com> > Cc: Michal Hocko <mhocko@suse.com> > Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Kiryl Shutsemau <kas@kernel.org> -- Kiryl Shutsemau / Kirill A. Shutemov
© 2016 - 2025 Red Hat, Inc.