|
@@ -578,8 +578,10 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
|
|
ret = move_vma(vma, addr, old_len, new_len, new_addr, &locked);
|
|
ret = move_vma(vma, addr, old_len, new_len, new_addr, &locked);
|
|
}
|
|
}
|
|
out:
|
|
out:
|
|
- if (ret & ~PAGE_MASK)
|
|
|
|
|
|
+ if (ret & ~PAGE_MASK) {
|
|
vm_unacct_memory(charged);
|
|
vm_unacct_memory(charged);
|
|
|
|
+ locked = 0;
|
|
|
|
+ }
|
|
up_write(¤t->mm->mmap_sem);
|
|
up_write(¤t->mm->mmap_sem);
|
|
if (locked && new_len > old_len)
|
|
if (locked && new_len > old_len)
|
|
mm_populate(new_addr + old_len, new_len - old_len);
|
|
mm_populate(new_addr + old_len, new_len - old_len);
|