aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
Diffstat (limited to 'mm')
-rw-r--r--mm/mempolicy.c2
-rw-r--r--mm/page_alloc.c3
2 files changed, 4 insertions, 1 deletions
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index c3429a710ab1..8002e1faccda 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -1290,7 +1290,7 @@ struct page *alloc_pages_current(gfp_t gfp, unsigned order)
1290 1290
1291 if ((gfp & __GFP_WAIT) && !in_interrupt()) 1291 if ((gfp & __GFP_WAIT) && !in_interrupt())
1292 cpuset_update_task_memory_state(); 1292 cpuset_update_task_memory_state();
1293 if (!pol || in_interrupt()) 1293 if (!pol || in_interrupt() || (gfp & __GFP_THISNODE))
1294 pol = &default_policy; 1294 pol = &default_policy;
1295 if (pol->policy == MPOL_INTERLEAVE) 1295 if (pol->policy == MPOL_INTERLEAVE)
1296 return alloc_page_interleave(gfp, order, interleave_nodes(pol)); 1296 return alloc_page_interleave(gfp, order, interleave_nodes(pol));
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 208a6b03aa78..ea498788af53 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -893,6 +893,9 @@ get_page_from_freelist(gfp_t gfp_mask, unsigned int order,
893 * See also cpuset_zone_allowed() comment in kernel/cpuset.c. 893 * See also cpuset_zone_allowed() comment in kernel/cpuset.c.
894 */ 894 */
895 do { 895 do {
896 if (unlikely((gfp_mask & __GFP_THISNODE) &&
897 (*z)->zone_pgdat != zonelist->zones[0]->zone_pgdat))
898 break;
896 if ((alloc_flags & ALLOC_CPUSET) && 899 if ((alloc_flags & ALLOC_CPUSET) &&
897 !cpuset_zone_allowed(*z, gfp_mask)) 900 !cpuset_zone_allowed(*z, gfp_mask))
898 continue; 901 continue;