|
@@ -161,6 +161,10 @@ static struct mempolicy *mpol_new(int mode, nodemask_t *nodes)
|
|
switch (mode) {
|
|
switch (mode) {
|
|
case MPOL_INTERLEAVE:
|
|
case MPOL_INTERLEAVE:
|
|
policy->v.nodes = *nodes;
|
|
policy->v.nodes = *nodes;
|
|
|
|
+ if (nodes_weight(*nodes) == 0) {
|
|
|
|
+ kmem_cache_free(policy_cache, policy);
|
|
|
|
+ return ERR_PTR(-EINVAL);
|
|
|
|
+ }
|
|
break;
|
|
break;
|
|
case MPOL_PREFERRED:
|
|
case MPOL_PREFERRED:
|
|
policy->v.preferred_node = first_node(*nodes);
|
|
policy->v.preferred_node = first_node(*nodes);
|