From: Linus Torvalds Date: Sat, 6 Feb 2010 00:16:50 +0000 (-0800) Subject: Fix potential crash with sys_move_pages X-Git-Tag: v2.6.31.13~89 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=45468a60ffdcc00758b849e651adc2329c86fd85;p=thirdparty%2Fkernel%2Fstable.git Fix potential crash with sys_move_pages commit 6f5a55f1a6c5abee15a0e878e5c74d9f1569b8b0 upstream. We incorrectly depended on the 'node_state/node_isset()' functions testing the node range, rather than checking it explicitly. That's not reliable, even if it might often happen to work. So do the proper explicit test. Reported-by: Marcus Meissner Acked-and-tested-by: Brice Goglin Acked-by: Hugh Dickins Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- diff --git a/mm/migrate.c b/mm/migrate.c index 598abad88f976..eebfb79d77489 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -937,6 +937,9 @@ static int do_pages_move(struct mm_struct *mm, struct task_struct *task, goto out_pm; err = -ENODEV; + if (node < 0 || node >= MAX_NUMNODES) + goto out_pm; + if (!node_state(node, N_HIGH_MEMORY)) goto out_pm;