mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-28 22:54:05 +08:00
mremap: check for overflow using deltas
Using "- 1" relies on the old_end to be page aligned and PAGE_SIZE > 1, those are reasonable requirements but the check remains obscure and it looks more like an off by one error than an overflow check. This I feel will improve readability. Signed-off-by: Andrea Arcangeli <aarcange@redhat.com> Acked-by: Johannes Weiner <jweiner@redhat.com> Acked-by: Mel Gorman <mgorman@suse.de> Acked-by: Rik van Riel <riel@redhat.com> Cc: Hugh Dickins <hughd@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
6661672053
commit
ebed48460b
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user