Lines Matching refs:old_len
334 unsigned long old_addr, unsigned long old_len,
364 err = ksm_madvise(vma, old_addr, old_addr + old_len,
375 moved_len = move_page_tables(vma, old_addr, new_vma, new_addr, old_len,
377 if (moved_len < old_len) {
392 old_len = new_len;
397 arch_remap(mm, old_addr, old_addr + old_len,
404 excess = vma->vm_end - vma->vm_start - old_len;
406 old_addr + old_len < vma->vm_end)
412 * since do_munmap() will decrement it by old_len == new_len.
452 if (do_munmap(mm, old_addr, old_len, uf_unmap) < 0) {
476 unsigned long old_len, unsigned long new_len, unsigned long flags,
487 * !old_len is a special case where an attempt is made to 'duplicate'
494 if (!old_len && !(vma->vm_flags & (VM_SHARED | VM_MAYSHARE))) {
507 if (old_len > vma->vm_end - addr)
510 if (new_len == old_len)
526 locked += new_len - old_len;
532 (new_len - old_len) >> PAGE_SHIFT))
536 unsigned long charged = (new_len - old_len) >> PAGE_SHIFT;
545 static unsigned long mremap_to(unsigned long addr, unsigned long old_len,
564 if (addr + old_len > new_addr && new_addr + new_len > addr)
590 if (old_len >= new_len) {
591 ret = do_munmap(mm, addr+new_len, old_len - new_len, uf_unmap);
592 if (ret && old_len != new_len)
594 old_len = new_len;
597 vma = vma_to_resize(addr, old_len, new_len, flags, &charged);
603 /* MREMAP_DONTUNMAP expands by old_len since old_len == new_len */
605 !may_expand_vm(mm, vma->vm_flags, old_len >> PAGE_SHIFT)) {
626 ret = move_vma(vma, addr, old_len, new_len, new_addr, locked, flags, uf,
659 SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
696 (!(flags & MREMAP_MAYMOVE) || old_len != new_len))
703 old_len = PAGE_ALIGN(old_len);
718 ret = mremap_to(addr, old_len, new_addr, new_len,
730 if (old_len >= new_len) {
733 retval = __do_munmap(mm, addr+new_len, old_len - new_len,
735 if (retval < 0 && old_len != new_len) {
748 vma = vma_to_resize(addr, old_len, new_len, flags, &charged);
754 /* old_len exactly to the end of the area..
756 if (old_len == vma->vm_end - addr) {
758 if (vma_expandable(vma, new_len - old_len)) {
759 int pages = (new_len - old_len) >> PAGE_SHIFT;
797 ret = move_vma(vma, addr, old_len, new_len, new_addr,
809 if (locked && new_len > old_len)
810 mm_populate(new_addr + old_len, new_len - old_len);
812 mremap_userfaultfd_complete(&uf, addr, ret, old_len);