The "len" parameter (4th arg) of get_user_pages() is in pages, not bytes. The effect of this bug is that if you migrate a page, and if this page is followed by valid virtual addresses, but these pages have not yet been touched and allocated, then the migration call will cause those pages to be touched and allocated. The number of pages so effected is the min of (16384, the remaining number of pages in the vma, the number of pages required to fill out the current pmd). Signed-off-by: Ray Bryant Index: linux/mm/rmap.c =================================================================== --- linux.orig/mm/rmap.c 2005-01-30 10:34:03.000000000 -0800 +++ linux/mm/rmap.c 2005-02-28 08:53:30.000000000 -0800 @@ -554,8 +554,7 @@ touch_unmapped_address(struct list_head vma = find_vma(v1->mm, v1->addr); if (vma == NULL) goto out; - error = get_user_pages(current, v1->mm, v1->addr, PAGE_SIZE, - 0, 0, NULL, NULL); + error = get_user_pages(current, v1->mm, v1->addr, 1, 0, 0, NULL, NULL); if (error < 0) ret = error; out: