diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2015-04-11 22:29:51 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2015-04-11 22:29:51 -0400 |
commit | dfea934575164497a9e36074ebce606a1a278ed9 (patch) | |
tree | b39ec564ae5a84956af80ae43de24c4f91720519 /mm | |
parent | 165f1a6e300d5a1ffb57cf9a9c8762de731228f2 (diff) | |
parent | 64b4e2526d1cf6e6a4db6213d6e2b6e6ab59479a (diff) | |
download | op-kernel-dev-dfea934575164497a9e36074ebce606a1a278ed9.zip op-kernel-dev-dfea934575164497a9e36074ebce606a1a278ed9.tar.gz |
Merge branch 'for-linus' into for-next
Diffstat (limited to 'mm')
-rw-r--r-- | mm/mremap.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/mm/mremap.c b/mm/mremap.c index 57dadc0..2dc44b1 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -286,8 +286,14 @@ static unsigned long move_vma(struct vm_area_struct *vma, old_len = new_len; old_addr = new_addr; new_addr = -ENOMEM; - } else if (vma->vm_file && vma->vm_file->f_op->mremap) - vma->vm_file->f_op->mremap(vma->vm_file, new_vma); + } else if (vma->vm_file && vma->vm_file->f_op->mremap) { + err = vma->vm_file->f_op->mremap(vma->vm_file, new_vma); + if (err < 0) { + move_page_tables(new_vma, new_addr, vma, old_addr, + moved_len, true); + return err; + } + } /* Conceal VM_ACCOUNT so old reservation is not undone */ if (vm_flags & VM_ACCOUNT) { |