On Fri, Feb 23, 2018 at 04:48:03PM +0200, Igor Stoppa wrote: > @@ -1769,6 +1771,9 @@ void *__vmalloc_node_range(unsigned long size, unsigned > long align, > > kmemleak_vmalloc(area, size, gfp_mask); > > + for (i = 0; i < area->nr_pages; i++) > + area->pages[i]->area = area; > + > return addr; > > fail:
IMO, this is the wrong place to initialise the page->area. It should be done in __vmalloc_area_node() like so: area->nr_pages = i; goto fail; } + page->area = area; area->pages[i] = page; if (gfpflags_allow_blocking(gfp_mask)) cond_resched();