--- /dev/null
+From stable-bounces@linux.kernel.org Wed Aug 3 18:45:03 2005
+Date: Wed, 3 Aug 2005 18:43:22 -0700
+From: Andrew Morton <akpm@osdl.org>
+To: stable@kernel.org
+Subject: [PATCH] sys_set_mempolicy() doesnt check if mode < 0
+
+From: Eric Dumazet <dada1@cosmosbay.com>
+
+[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>
+Signed-off-by: Chris Wright <chrisw@osdl.org>
+---
+ mm/mempolicy.c | 2 +-
+ 1 files changed, 1 insertion(+), 1 deletion(-)
+
+Index: linux-2.6.12.y/mm/mempolicy.c
+===================================================================
+--- linux-2.6.12.y.orig/mm/mempolicy.c
++++ linux-2.6.12.y/mm/mempolicy.c
+@@ -409,7 +409,7 @@ asmlinkage long sys_set_mempolicy(int mo
+ 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)