On Mon, Aug 29, 2022 at 04:00:08PM -0700, Sidhartha Kumar wrote: > #define TESTHPAGEFLAG(uname, flname) \ > +static __always_inline \ > +int folio_test_hugetlb_##flname(struct folio *folio) \ One change I made was to have folio_test_foo() return bool instead of int. It helps the compiler really understand what's going on. Maybe some humans too ;-) > + { void **private = &folio->private; \ > + return test_bit(HPG_##flname, (void *)((unsigned long)private)); \ I've made this tricky for you by making folio->private a void * instead of the unsigned long in page. Would this look better as ... { \ void *private = &folio->private; \ return test_bit(HPG_##flname, private); \ perhaps?