X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=mm%2Ffilemap.c;h=556858c07148bb4ed97aa36c5447f465b5a0b200;hb=358c10d5ce93cf7cf3ae6cd66e2e533d680591d5;hp=03c5b0ec2b78d6913d551665fa1660deed64267b;hpb=76af79f393ad562077f79627a4c719219ef09ee8;p=pandora-kernel.git diff --git a/mm/filemap.c b/mm/filemap.c index 03c5b0ec2b78..556858c07148 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -500,10 +500,13 @@ struct page *__page_cache_alloc(gfp_t gfp) struct page *page; if (cpuset_do_page_mem_spread()) { - get_mems_allowed(); - n = cpuset_mem_spread_node(); - page = alloc_pages_exact_node(n, gfp, 0); - put_mems_allowed(); + unsigned int cpuset_mems_cookie; + do { + cpuset_mems_cookie = get_mems_allowed(); + n = cpuset_mem_spread_node(); + page = alloc_pages_exact_node(n, gfp, 0); + } while (!put_mems_allowed(cpuset_mems_cookie) && !page); + return page; } return alloc_pages(gfp, 0);