From 8f432a0a12cc5d5719480a4b1030ae91ed3e7568 Mon Sep 17 00:00:00 2001 From: Andrea Arcangeli Date: Mon, 31 Oct 2011 17:08:22 -0700 Subject: [PATCH] --- yaml --- r: 272138 b: refs/heads/master c: ebed48460be5abd86d9a24fa7c66378e58109f30 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/mm/mremap.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 933ca4fc9f65..bdffff7c9de8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6661672053aee709d93f5dbd7887c789364c11d4 +refs/heads/master: ebed48460be5abd86d9a24fa7c66378e58109f30 diff --git a/trunk/mm/mremap.c b/trunk/mm/mremap.c index 506fa44403df..195e866568e0 100644 --- a/trunk/mm/mremap.c +++ b/trunk/mm/mremap.c @@ -141,9 +141,10 @@ unsigned long move_page_tables(struct vm_area_struct *vma, for (; old_addr < old_end; old_addr += extent, new_addr += extent) { cond_resched(); next = (old_addr + PMD_SIZE) & PMD_MASK; - if (next - 1 > old_end) - next = old_end; + /* even if next overflowed, extent below will be ok */ extent = next - old_addr; + if (extent > old_end - old_addr) + extent = old_end - old_addr; old_pmd = get_old_pmd(vma->vm_mm, old_addr); if (!old_pmd) continue;