summary refs log tree commit diff
path: root/mm/mempolicy.c
diff options
context:
space:
mode:
authorEric Dumazet <dada1@cosmosbay.com>2005-08-01 21:11:43 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2005-08-01 21:38:00 -0700
commitba17101b41977f124948e0a7797fdcbb59e19f3e (patch)
tree0d5e8b860e1294e4e38576624e1909075cb84ea6 /mm/mempolicy.c
parent690dbe1ced143876d8fa56b72310738dbe079d0a (diff)
downloadlinux-ba17101b41977f124948e0a7797fdcbb59e19f3e.tar.gz
[PATCH] sys_set_mempolicy() doesnt check if mode < 0
A kernel BUG() is triggered by a call to set_mempolicy() with a negative
first argument.  This is because the mode is declared as an int, and the
validity check doesnt check < 0 values.  Alternatively, mode could be
declared as unsigned int or unsigned long.

Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'mm/mempolicy.c')
-rw-r--r--mm/mempolicy.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index 1694845526be..b4eababc8198 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -443,7 +443,7 @@ asmlinkage long sys_set_mempolicy(int mode, unsigned long __user *nmask,
 	struct mempolicy *new;
 	DECLARE_BITMAP(nodes, MAX_NUMNODES);
 
-	if (mode > MPOL_MAX)
+	if (mode < 0 || mode > MPOL_MAX)
 		return -EINVAL;
 	err = get_nodes(nodes, nmask, maxnode, mode);
 	if (err)