mm: Make copy_from_user() in migrate.c statically predictable
authorH. Peter Anvin <hpa@zytor.com>
Fri, 19 Feb 2010 00:13:40 +0000 (16:13 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 21 Feb 2010 16:57:08 +0000 (08:57 -0800)
commit87b8d1adefa1548b591cbf0d63965987e2cf893d
tree9bb71e42dfed2ac212a9dc55dd5e2ba1f8d042ac
parentaea187c46f7d03ce985e55eb1398d0776a15b928
mm: Make copy_from_user() in migrate.c statically predictable

x86-32 has had a static test for copy_on_user() overflow for a while.
This test currently fails in mm/migrate.c resulting in an
allyesconfig/allmodconfig build failure on x86-32:

In function ‘copy_from_user’,
    inlined from ‘do_pages_stat’ at
    /home/hpa/kernel/git/mm/migrate.c:1012:
/home/hpa/kernel/git/arch/x86/include/asm/uaccess_32.h:212: error:
    call to ‘copy_from_user_overflow’ declared

Make the logic more explicit and therefore easier for gcc to
understand.

v2: rewrite the loop entirely using a more normal structure for a
    chunked-data loop (Linus Torvalds)

Reported-by: Len Brown <lenb@kernel.org>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Reviewed-and-Tested-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Arjan van de Ven <arjan@linux.kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Christoph Lameter <cl@linux-foundation.org>
Cc: Hugh Dickins <hugh.dickins@tiscali.co.uk>
Cc: Rik van Riel <riel@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/migrate.c