get_nodes doesn't check if nodes in node mask are valid, cause a kernel
oops when an invalid node is used..
Signed-off-by: Shaohua Li <[email protected]>
Index: linux/mm/mempolicy.c
===================================================================
--- linux.orig/mm/mempolicy.c 2007-07-25 09:14:33.000000000 +0800
+++ linux/mm/mempolicy.c 2007-08-21 13:15:41.000000000 +0800
@@ -850,6 +850,8 @@ static int get_nodes(nodemask_t *nodes,
if (copy_from_user(nodes_addr(*nodes), nmask, nlongs*sizeof(unsigned long)))
return -EFAULT;
nodes_addr(*nodes)[nlongs-1] &= endmask;
+
+ nodes_and(*nodes, *nodes, node_online_map);
return 0;
}