|
@@ -539,10 +539,6 @@ static struct page *dequeue_huge_page_vma(struct hstate *h,
|
|
|
struct zoneref *z;
|
|
|
unsigned int cpuset_mems_cookie;
|
|
|
|
|
|
-retry_cpuset:
|
|
|
- cpuset_mems_cookie = get_mems_allowed();
|
|
|
- zonelist = huge_zonelist(vma, address,
|
|
|
- htlb_alloc_mask, &mpol, &nodemask);
|
|
|
/*
|
|
|
* A child process with MAP_PRIVATE mappings created by their parent
|
|
|
* have no page reserves. This check ensures that reservations are
|
|
@@ -556,6 +552,11 @@ retry_cpuset:
|
|
|
if (avoid_reserve && h->free_huge_pages - h->resv_huge_pages == 0)
|
|
|
goto err;
|
|
|
|
|
|
+retry_cpuset:
|
|
|
+ cpuset_mems_cookie = get_mems_allowed();
|
|
|
+ zonelist = huge_zonelist(vma, address,
|
|
|
+ htlb_alloc_mask, &mpol, &nodemask);
|
|
|
+
|
|
|
for_each_zone_zonelist_nodemask(zone, z, zonelist,
|
|
|
MAX_NR_ZONES - 1, nodemask) {
|
|
|
if (cpuset_zone_allowed_softwall(zone, htlb_alloc_mask)) {
|
|
@@ -574,7 +575,6 @@ retry_cpuset:
|
|
|
return page;
|
|
|
|
|
|
err:
|
|
|
- mpol_cond_put(mpol);
|
|
|
return NULL;
|
|
|
}
|
|
|
|