Fix 'get_user_pages_fast()' with non-page-aligned start address
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 29 Jul 2008 00:54:21 +0000 (17:54 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 29 Jul 2008 00:54:21 +0000 (17:54 -0700)
commit9b79022ca909b66e2cd0cfd9248f832fc165f77f
treebcd8c3204886fcbc8422aeb482f8e42c0b5b6124
parent34ee55014283a60efa3534c06e010579ffdd3756
Fix 'get_user_pages_fast()' with non-page-aligned start address

Alexey Dobriyan reported trouble with LTP with the new fast-gup code,
and Johannes Weiner debugged it to non-page-aligned addresses, where the
new get_user_pages_fast() code would do all the wrong things, including
just traversing past the end of the requested area due to 'addr' never
matching 'end' exactly.

This is not a pretty fix, and we may actually want to move the alignment
into generic code, leaving just the core code per-arch, but Alexey
verified that the vmsplice01 LTP test doesn't crash with this.

Reported-and-tested-by: Alexey Dobriyan <adobriyan@gmail.com>
Debugged-by: Johannes Weiner <hannes@saeurebad.de>
Cc: Nick Piggin <npiggin@suse.de>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/x86/mm/gup.c