On 03/28/2018 09:55 AM, Kirill A. Shutemov wrote: > @@ -51,7 +51,7 @@ static inline struct page *new_page_nodemask(struct page *page, > if (PageHighMem(page) || (zone_idx(page_zone(page)) == ZONE_MOVABLE)) > gfp_mask |= __GFP_HIGHMEM; > > - new_page = __alloc_pages_nodemask(gfp_mask, order, > + new_page = __alloc_pages_nodemask(gfp_mask, order, page_keyid(page), > preferred_nid, nodemask); You're not going to like this suggestion. Am I looking at this too superficially, or does every single site into which you pass keyid also take a node and gfpmask and often an order? I think you need to run this by the keepers of page_alloc.c and see if they'd rather do something more drastic.