|
|
@@ -1920,8 +1920,11 @@ static struct page *alloc_page_interleave(gfp_t gfp, unsigned order,
|
|
|
struct page *page;
|
|
|
|
|
|
page = __alloc_pages(gfp, order, nid);
|
|
|
- if (page && page_to_nid(page) == nid)
|
|
|
- inc_zone_page_state(page, NUMA_INTERLEAVE_HIT);
|
|
|
+ if (page && page_to_nid(page) == nid) {
|
|
|
+ preempt_disable();
|
|
|
+ __inc_numa_state(page_zone(page), NUMA_INTERLEAVE_HIT);
|
|
|
+ preempt_enable();
|
|
|
+ }
|
|
|
return page;
|
|
|
}
|
|
|
|