View | Details | Raw Unified
Collapse All | Expand All

(-) a/arch/ia64/ia32/binfmt_elf32.c (-4 / +16 lines)
 Lines 95-101    Link Here 
		vma->vm_private_data = NULL;
		vma->vm_private_data = NULL;
		down_write(&current->mm->mmap_sem);
		down_write(&current->mm->mmap_sem);
		{
		{
			insert_vm_struct(current->mm, vma);
			if (insert_vm_struct(current->mm, vma)) {
				kmem_cache_free(vm_area_cachep, vma);
				up_write(&current->mm->mmap_sem);
				return;
			}
		}
		}
		up_write(&current->mm->mmap_sem);
		up_write(&current->mm->mmap_sem);
	}
	}
 Lines 117-123    Link Here 
		vma->vm_private_data = NULL;
		vma->vm_private_data = NULL;
		down_write(&current->mm->mmap_sem);
		down_write(&current->mm->mmap_sem);
		{
		{
			insert_vm_struct(current->mm, vma);
			if (insert_vm_struct(current->mm, vma)) {
				kmem_cache_free(vm_area_cachep, vma);
				up_write(&current->mm->mmap_sem);
				return;
			}
		}
		}
		up_write(&current->mm->mmap_sem);
		up_write(&current->mm->mmap_sem);
	}
	}
 Lines 164-170    Link Here 
{
{
	unsigned long stack_base;
	unsigned long stack_base;
	struct vm_area_struct *mpnt;
	struct vm_area_struct *mpnt;
	int i;
	int i, ret;
	stack_base = IA32_STACK_TOP - MAX_ARG_PAGES*PAGE_SIZE;
	stack_base = IA32_STACK_TOP - MAX_ARG_PAGES*PAGE_SIZE;
 Lines 188-194    Link Here 
		mpnt->vm_pgoff = 0;
		mpnt->vm_pgoff = 0;
		mpnt->vm_file = NULL;
		mpnt->vm_file = NULL;
		mpnt->vm_private_data = 0;
		mpnt->vm_private_data = 0;
		insert_vm_struct(current->mm, mpnt);
		if ((ret = insert_vm_struct(current->mm, mpnt))) {
			up_write(&current->mm->mmap_sem);
			kmem_cache_free(vm_area_cachep, mpnt);
			return ret;
		}
		current->mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
		current->mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
	}
	}
(-) a/arch/ia64/mm/init.c (-2 / +14 lines)
 Lines 105-111    Link Here 
		vma->vm_pgoff = 0;
		vma->vm_pgoff = 0;
		vma->vm_file = NULL;
		vma->vm_file = NULL;
		vma->vm_private_data = NULL;
		vma->vm_private_data = NULL;
		insert_vm_struct(current->mm, vma);
		down_write(&current->mm->mmap_sem);
		if (insert_vm_struct(current->mm, vma)) {
			up_write(&current->mm->mmap_sem);
			kmem_cache_free(vm_area_cachep, vma);
			return;
		}
		up_write(&current->mm->mmap_sem);
	}
	}
	/* map NaT-page at address zero to speed up speculative dereferencing of NULL: */
	/* map NaT-page at address zero to speed up speculative dereferencing of NULL: */
 Lines 117-123    Link Here 
			vma->vm_end = PAGE_SIZE;
			vma->vm_end = PAGE_SIZE;
			vma->vm_page_prot = __pgprot(pgprot_val(PAGE_READONLY) | _PAGE_MA_NAT);
			vma->vm_page_prot = __pgprot(pgprot_val(PAGE_READONLY) | _PAGE_MA_NAT);
			vma->vm_flags = VM_READ | VM_MAYREAD | VM_IO | VM_RESERVED;
			vma->vm_flags = VM_READ | VM_MAYREAD | VM_IO | VM_RESERVED;
			insert_vm_struct(current->mm, vma);
			down_write(&current->mm->mmap_sem);
			if (insert_vm_struct(current->mm, vma)) {
				up_write(&current->mm->mmap_sem);
				kmem_cache_free(vm_area_cachep, vma);
				return;
			}
			up_write(&current->mm->mmap_sem);
		}
		}
	}
	}
}
}
(-) a/arch/s390x/kernel/exec32.c (-2 / +6 lines)
 Lines 41-47    Link Here 
{
{
	unsigned long stack_base;
	unsigned long stack_base;
	struct vm_area_struct *mpnt;
	struct vm_area_struct *mpnt;
	int i;
	int i, ret;
	stack_base = STACK_TOP - MAX_ARG_PAGES*PAGE_SIZE;
	stack_base = STACK_TOP - MAX_ARG_PAGES*PAGE_SIZE;
 Lines 65-71    Link Here 
		mpnt->vm_pgoff = 0;
		mpnt->vm_pgoff = 0;
		mpnt->vm_file = NULL;
		mpnt->vm_file = NULL;
		mpnt->vm_private_data = (void *) 0;
		mpnt->vm_private_data = (void *) 0;
		insert_vm_struct(current->mm, mpnt);
		if ((ret = insert_vm_struct(current->mm, mpnt))) {
			up_write(&current->mm->mmap_sem);
			kmem_cache_free(vm_area_cachep, mpnt);
			return ret;
		}
		current->mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
		current->mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
	} 
	} 
(-) a/arch/x86_64/ia32/ia32_binfmt.c (-2 / +6 lines)
 Lines 225-231    Link Here 
{
{
	unsigned long stack_base;
	unsigned long stack_base;
	struct vm_area_struct *mpnt;
	struct vm_area_struct *mpnt;
	int i;
	int i, ret;
	stack_base = IA32_STACK_TOP - MAX_ARG_PAGES*PAGE_SIZE;
	stack_base = IA32_STACK_TOP - MAX_ARG_PAGES*PAGE_SIZE;
 Lines 250-256    Link Here 
		mpnt->vm_pgoff = 0;
		mpnt->vm_pgoff = 0;
		mpnt->vm_file = NULL;
		mpnt->vm_file = NULL;
		mpnt->vm_private_data = (void *) 0;
		mpnt->vm_private_data = (void *) 0;
		insert_vm_struct(current->mm, mpnt);
		if ((ret = insert_vm_struct(current->mm, mpnt))) {
			up_write(&current->mm->mmap_sem);
			kmem_cache_free(vm_area_cachep, mpnt);
			return ret;
		}
		current->mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
		current->mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
	} 
	} 
(-) a/fs/exec.c (-2 / +6 lines)
 Lines 327-333    Link Here 
{
{
	unsigned long stack_base;
	unsigned long stack_base;
	struct vm_area_struct *mpnt;
	struct vm_area_struct *mpnt;
	int i;
	int i, ret;
	stack_base = STACK_TOP - MAX_ARG_PAGES*PAGE_SIZE;
	stack_base = STACK_TOP - MAX_ARG_PAGES*PAGE_SIZE;
 Lines 351-357    Link Here 
		mpnt->vm_pgoff = 0;
		mpnt->vm_pgoff = 0;
		mpnt->vm_file = NULL;
		mpnt->vm_file = NULL;
		mpnt->vm_private_data = (void *) 0;
		mpnt->vm_private_data = (void *) 0;
		insert_vm_struct(current->mm, mpnt);
		if ((ret = insert_vm_struct(current->mm, mpnt))) {
			up_write(&current->mm->mmap_sem);
			kmem_cache_free(vm_area_cachep, mpnt);
			return ret;
		}
		current->mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
		current->mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
	} 
	} 
(-) a/include/linux/mm.h (-1 / +1 lines)
 Lines 548-554    Link Here 
/* mmap.c */
/* mmap.c */
extern void lock_vma_mappings(struct vm_area_struct *);
extern void lock_vma_mappings(struct vm_area_struct *);
extern void unlock_vma_mappings(struct vm_area_struct *);
extern void unlock_vma_mappings(struct vm_area_struct *);
extern void insert_vm_struct(struct mm_struct *, struct vm_area_struct *);
extern int insert_vm_struct(struct mm_struct *, struct vm_area_struct *);
extern void __insert_vm_struct(struct mm_struct *, struct vm_area_struct *);
extern void __insert_vm_struct(struct mm_struct *, struct vm_area_struct *);
extern void build_mmap_rb(struct mm_struct *);
extern void build_mmap_rb(struct mm_struct *);
extern void exit_mmap(struct mm_struct *);
extern void exit_mmap(struct mm_struct *);
(-) a/mm/mmap.c (-2 / +3 lines)
 Lines 1193-1206    Link Here 
	validate_mm(mm);
	validate_mm(mm);
}
}
void insert_vm_struct(struct mm_struct * mm, struct vm_area_struct * vma)
int insert_vm_struct(struct mm_struct * mm, struct vm_area_struct * vma)
{
{
	struct vm_area_struct * __vma, * prev;
	struct vm_area_struct * __vma, * prev;
	rb_node_t ** rb_link, * rb_parent;
	rb_node_t ** rb_link, * rb_parent;
	__vma = find_vma_prepare(mm, vma->vm_start, &prev, &rb_link, &rb_parent);
	__vma = find_vma_prepare(mm, vma->vm_start, &prev, &rb_link, &rb_parent);
	if (__vma && __vma->vm_start < vma->vm_end)
	if (__vma && __vma->vm_start < vma->vm_end)
		BUG();
		return -ENOMEM;
	vma_link(mm, vma, prev, rb_link, rb_parent);
	vma_link(mm, vma, prev, rb_link, rb_parent);
	validate_mm(mm);
	validate_mm(mm);
	return 0;
}
}