[PATCH] Make sure interleave masks have at least one node set
Otherwise a bad mem policy system call can confuse the interleaving code into referencing undefined nodes. Originally reported by Doug Chapman I was told it's CVE-2005-3358 (one has to love these security people - they make everything sound important) Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
committed by
Linus Torvalds
parent
abe842eb98
commit
8f493d797b
@@ -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);
|
||||||
|
Reference in New Issue
Block a user