new_vma
struct vm_area_struct *new_vma)
current->mm->context.sigpage = new_vma->vm_start;
struct vm_area_struct *new_vma)
current->mm->context.vdso = new_vma->vm_start;
struct vm_area_struct *new_vma)
current->mm->context.sigpage = (void *)new_vma->vm_start;
struct vm_area_struct *new_vma)
current->mm->context.vdso = (void *)new_vma->vm_start;
static int vdso_mremap(const struct vm_special_mapping *sm, struct vm_area_struct *new_vma)
current->mm->context.vdso = (void *)(new_vma->vm_start);
static int vdso_mremap(const struct vm_special_mapping *sm, struct vm_area_struct *new_vma,
unsigned long new_size = new_vma->vm_end - new_vma->vm_start;
current->mm->context.vdso = (void __user *)new_vma->vm_start;
static int vdso32_mremap(const struct vm_special_mapping *sm, struct vm_area_struct *new_vma)
return vdso_mremap(sm, new_vma, &vdso32_end - &vdso32_start);
static int vdso64_mremap(const struct vm_special_mapping *sm, struct vm_area_struct *new_vma)
return vdso_mremap(sm, new_vma, &vdso64_end - &vdso64_start);
struct vm_area_struct *new_vma)
current->mm->context.vdso = (void *)new_vma->vm_start;
struct vm_area_struct *new_vma)
vdso_fix_landing(image, new_vma);
current->mm->context.vdso = (void __user *)new_vma->vm_start;
struct vm_area_struct *new_vma)
regs->ip = new_vma->vm_start + ipoffset;
static int tramp_mremap(const struct vm_special_mapping *sm, struct vm_area_struct *new_vma)
new_vma:
goto new_vma;
vma = new_vma(vm, &op->base.map, &default_attr,
vma = new_vma(vm, op->base.remap.prev,
vma = new_vma(vm, op->base.remap.next,
struct vm_area_struct *new_vma,
struct vm_area_struct *new_vma,
struct vm_area_struct *new_vma)
new_vma->anon_name = anon_vma_name_reuse(anon_name);
struct vm_area_struct *new_vma) {}
struct vm_area_struct *new_vma);
static int xol_mremap(const struct vm_special_mapping *sm, struct vm_area_struct *new_vma)
struct vm_area_struct *new_vma,
dst_pte = huge_pte_alloc(mm, new_vma, new_addr, sz);
static int special_mapping_mremap(struct vm_area_struct *new_vma)
struct vm_special_mapping *sm = new_vma->vm_private_data;
if (WARN_ON_ONCE(current->mm != new_vma->vm_mm))
return sm->mremap(sm, new_vma);
struct vm_area_struct *new_vma,
if (!write || addr >= new_vma->vm_start) {
if (!(new_vma->vm_flags & VM_GROWSDOWN))
if (expand_downwards(new_vma, addr)) {
struct vm_area_struct *new_vma;
new_vma = copy_vma(&vma, vrm->new_addr, vrm->new_len, new_pgoff,
if (!new_vma) {
pmc.new = new_vma;
err = vma->vm_ops->mremap(new_vma);
PAGETABLE_MOVE(pmc_revert, new_vma, vma, vrm->new_addr,
vrm->vma = new_vma;
mremap_userfaultfd_prep(new_vma, vrm->uf);
*new_vma_ptr = new_vma;
struct vm_area_struct *new_vma)
if (new_vma != vrm->vma && start == old_start && end == old_end)
struct vm_area_struct *new_vma;
err = copy_vma_and_data(vrm, &new_vma);
if (err && !new_vma)
dontunmap_complete(vrm, new_vma);
struct vm_area_struct *new_vma;
new_vma = find_vma_prev(mm, addr, &vmg.prev);
if (new_vma && new_vma->vm_start < addr + len)
new_vma = vma_merge_copied_range(&vmg);
if (new_vma) {
if (unlikely(vma_start >= new_vma->vm_start &&
vma_start < new_vma->vm_end)) {
VM_BUG_ON_VMA(faulted_in_anon_vma, new_vma);
*vmap = vma = new_vma;
*need_rmap_locks = (new_vma->vm_pgoff <= vma->vm_pgoff);
new_vma = vm_area_dup(vma);
if (!new_vma)
vma_set_range(new_vma, addr, addr + len, pgoff);
if (vma_dup_policy(vma, new_vma))
if (anon_vma_clone(new_vma, vma, VMA_OP_REMAP))
if (new_vma->vm_file)
get_file(new_vma->vm_file);
if (new_vma->vm_ops && new_vma->vm_ops->open)
new_vma->vm_ops->open(new_vma);
if (vma_link(mm, new_vma))
return new_vma;
fixup_hugetlb_reservations(new_vma);
vma_close(new_vma);
if (new_vma->vm_file)
fput(new_vma->vm_file);
unlink_anon_vmas(new_vma);
mpol_put(vma_policy(new_vma));
vm_area_free(new_vma);
struct vm_area_struct *new_vma)