[Cc Nick] On Wed 27-03-19 17:57:52, Anshuman Khandual wrote: > Just check for enforce parameter in PF_ONLY_HEAD() wrapper before calling > VM_BUG_ON_PGFLAGS() for tail pages. Why is this an actual fix? Only TESTPAGEFLAG doesn't enforce the check but I suspect that Nick just wanted the check to be _always_ performed as the name suggests. What kind of problem are you trying to solve? > Fixes: 62906027091f ("mm: add PageWaiters indicating tasks are waiting for a page bit") > Signed-off-by: Anshuman Khandual <anshuman.khandual@xxxxxxx> > --- > include/linux/page-flags.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h > index 9f8712a4b1a5..82539e287bc6 100644 > --- a/include/linux/page-flags.h > +++ b/include/linux/page-flags.h > @@ -229,7 +229,7 @@ static inline void page_init_poison(struct page *page, size_t size) > #define PF_ANY(page, enforce) PF_POISONED_CHECK(page) > #define PF_HEAD(page, enforce) PF_POISONED_CHECK(compound_head(page)) > #define PF_ONLY_HEAD(page, enforce) ({ \ > - VM_BUG_ON_PGFLAGS(PageTail(page), page); \ > + VM_BUG_ON_PGFLAGS(enforce && PageTail(page), page); \ > PF_POISONED_CHECK(page); }) > #define PF_NO_TAIL(page, enforce) ({ \ > VM_BUG_ON_PGFLAGS(enforce && PageTail(page), page); \ > -- > 2.20.1 > -- Michal Hocko SUSE Labs