diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 06c7cd7761134b1ca140ab80c43ba524be5f5844..f5e7cacc20cb2b6ab68e95fc93ab950fb01f3025 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -1797,6 +1797,13 @@ static int policy_node(gfp_t gfp, struct mempolicy *policy, WARN_ON_ONCE(policy->mode == MPOL_BIND && (gfp & __GFP_THISNODE)); } + if (policy->mode == MPOL_BIND) { + if (unlikely(!node_isset(nd, policy->v.nodes))) { + if (is_cdm_node(first_node(policy->v.nodes))) + nd = first_node(policy->v.nodes); + } + } + return nd; }