View | Details | Raw Unified
Collapse All | Expand All

(-) linux-2.4.28-gentoo-r2/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;
	}
	}
(-) linux-2.4.28-gentoo-r2/arch/ia64/kernel/perfmon.c (-1 / +2 lines)
 Lines 967-973    Link Here 
	 * now insert the vma in the vm list for the process, must be
	 * now insert the vma in the vm list for the process, must be
	 * done with mmap lock held
	 * done with mmap lock held
	 */
	 */
	insert_vm_struct(mm, vma);
	if(insert_vm_struct(mm, vma)) /* Handle -ENOMEM et al. */
		goto error;
	mm->total_vm  += size >> PAGE_SHIFT;
	mm->total_vm  += size >> PAGE_SHIFT;
(-) linux-2.4.28-gentoo-r2/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);
		}
		}
	}
	}
}
}
(-) linux-2.4.28-gentoo-r2/arch/ppc/mm/fault.c (-4 / +15 lines)
 Lines 83-90    Link Here 
	nopage:		pax_syscall_nopage,
	nopage:		pax_syscall_nopage,
};
};
static void pax_insert_vma(struct vm_area_struct *vma, unsigned long addr)
static int pax_insert_vma(struct vm_area_struct *vma, unsigned long addr)
{
{
	int ret;
	vma->vm_mm = current->mm;
	vma->vm_mm = current->mm;
	vma->vm_start = addr;
	vma->vm_start = addr;
	vma->vm_end = addr + PAGE_SIZE;
	vma->vm_end = addr + PAGE_SIZE;
 Lines 94-101    Link Here 
	vma->vm_pgoff = 0UL;
	vma->vm_pgoff = 0UL;
	vma->vm_file = NULL;
	vma->vm_file = NULL;
	vma->vm_private_data = NULL;
	vma->vm_private_data = NULL;
	insert_vm_struct(current->mm, vma);
	ret = insert_vm_struct(current->mm, vma);
	if(ret != 0)
	{
		up_write(&current->mm->mmap_sem);
		kmem_cache_free(vm_area_cachep, vma);
		return ret;
	}
	++current->mm->total_vm;
	++current->mm->total_vm;
	return 0;
}
}
#endif
#endif
 Lines 333-339    Link Here 
				return 1;
				return 1;
			}
			}
			pax_insert_vma(vma, call_syscall);
			if(pax_insert_vma(vma, call_syscall))
				return 1; /* VMA overlapping attempt; bye bye! */
			current->mm->call_syscall = call_syscall;
			current->mm->call_syscall = call_syscall;
			up_write(&current->mm->mmap_sem);
			up_write(&current->mm->mmap_sem);
 Lines 377-383    Link Here 
				return 1;
				return 1;
			}
			}
			pax_insert_vma(vma, call_syscall);
			if(pax_insert_vma(vma, call_syscall))
				return 1; /* VMA overlapping attempt; bye bye! */
			current->mm->call_syscall = call_syscall;
			current->mm->call_syscall = call_syscall;
			up_write(&current->mm->mmap_sem);
			up_write(&current->mm->mmap_sem);
(-) linux-2.4.28-gentoo-r2/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;
	} 
	} 
(-) linux-2.4.28-gentoo-r2/arch/sparc/mm/fault.c (-3 / +13 lines)
 Lines 250-257    Link Here 
	nopage:		pax_emuplt_nopage,
	nopage:		pax_emuplt_nopage,
};
};
static void pax_insert_vma(struct vm_area_struct *vma, unsigned long addr)
static int pax_insert_vma(struct vm_area_struct *vma, unsigned long addr)
{
{
	int ret;
	vma->vm_mm = current->mm;
	vma->vm_mm = current->mm;
	vma->vm_start = addr;
	vma->vm_start = addr;
	vma->vm_end = addr + PAGE_SIZE;
	vma->vm_end = addr + PAGE_SIZE;
 Lines 261-268    Link Here 
	vma->vm_pgoff = 0UL;
	vma->vm_pgoff = 0UL;
	vma->vm_file = NULL;
	vma->vm_file = NULL;
	vma->vm_private_data = NULL;
	vma->vm_private_data = NULL;
	insert_vm_struct(current->mm, vma);
	ret = insert_vm_struct(current->mm, vma);
	if(ret != 0)
	{
		up_write(&current->mm->mmap_sem);
		kmem_cache_free(vm_area_cachep, vma);
		return ret;
	}
	++current->mm->total_vm;
	++current->mm->total_vm;
	return 0;
}
}
/*
/*
 Lines 423-429    Link Here 
					return 1;
					return 1;
				}
				}
				pax_insert_vma(vma, call_dl_resolve);
				if(pax_insert_vma(vma, call_dl_resolve))
					return 1; /* VMA overlapping attempt; bye bye! */
				current->mm->call_dl_resolve = call_dl_resolve;
				current->mm->call_dl_resolve = call_dl_resolve;
				up_write(&current->mm->mmap_sem);
				up_write(&current->mm->mmap_sem);
(-) linux-2.4.28-gentoo-r2/arch/sparc64/mm/fault.c (-3 / +13 lines)
 Lines 338-345    Link Here 
	nopage:		pax_emuplt_nopage,
	nopage:		pax_emuplt_nopage,
};
};
static void pax_insert_vma(struct vm_area_struct *vma, unsigned long addr)
static int pax_insert_vma(struct vm_area_struct *vma, unsigned long addr)
{
{
	int ret;
	vma->vm_mm = current->mm;
	vma->vm_mm = current->mm;
	vma->vm_start = addr;
	vma->vm_start = addr;
	vma->vm_end = addr + PAGE_SIZE;
	vma->vm_end = addr + PAGE_SIZE;
 Lines 349-356    Link Here 
	vma->vm_pgoff = 0UL; 
	vma->vm_pgoff = 0UL; 
	vma->vm_file = NULL;
	vma->vm_file = NULL;
	vma->vm_private_data = NULL;
	vma->vm_private_data = NULL;
	insert_vm_struct(current->mm, vma);
	ret = insert_vm_struct(current->mm, vma);
	if(ret != 0)
	{
		up_write(&current->mm->mmap_sem);
		kmem_cache_free(vm_area_cachep, vma);
		return ret;
	}
	++current->mm->total_vm;
	++current->mm->total_vm;
	return 0;
}
}
#endif
#endif
 Lines 609-615    Link Here 
					return 1;
					return 1;
				}
				}
				pax_insert_vma(vma, call_dl_resolve);
				if(pax_insert_vma(vma, call_dl_resolve))
					return 1; /* VMA overlapping attempt; bye bye! */
				current->mm->call_dl_resolve = call_dl_resolve;
				current->mm->call_dl_resolve = call_dl_resolve;
				up_write(&current->mm->mmap_sem);
				up_write(&current->mm->mmap_sem);
(-) linux-2.4.28-gentoo-r2/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;
	} 
	} 
(-) linux-2.4.28-gentoo-r2/fs/exec.c (-6 / +3 lines)
 Lines 358-364    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;
#ifdef CONFIG_GRKERNSEC_PAX_SEGMEXEC
#ifdef CONFIG_GRKERNSEC_PAX_SEGMEXEC
	struct vm_area_struct *mpnt_m = NULL;
	struct vm_area_struct *mpnt_m = NULL;
 Lines 387-393    Link Here 
	down_write(&current->mm->mmap_sem);
	down_write(&current->mm->mmap_sem);
	{
	{
		struct vm_area_struct *vma;
		mpnt->vm_mm = current->mm;
		mpnt->vm_mm = current->mm;
		mpnt->vm_start = PAGE_MASK & (unsigned long) bprm->p;
		mpnt->vm_start = PAGE_MASK & (unsigned long) bprm->p;
		mpnt->vm_end = STACK_TOP;
		mpnt->vm_end = STACK_TOP;
 Lines 402-414    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;
		vma = find_vma(current->mm, mpnt->vm_start);
		if ((ret = insert_vm_struct(current->mm, mpnt))) {
		if (vma) {
			up_write(&current->mm->mmap_sem);
			up_write(&current->mm->mmap_sem);
			kmem_cache_free(vm_area_cachep, mpnt);
			kmem_cache_free(vm_area_cachep, mpnt);
			return -ENOMEM;
			return ret;
		}
		}
		insert_vm_struct(current->mm, mpnt);
		current->mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
		current->mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
#ifdef CONFIG_GRKERNSEC_PAX_SEGMEXEC
#ifdef CONFIG_GRKERNSEC_PAX_SEGMEXEC
(-) linux-2.4.28-gentoo-r2/include/linux/mm.h (-1 / +1 lines)
 Lines 577-583    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 *);
(-) linux-2.4.28-gentoo-r2/mm/mmap.c (-2 / +3 lines)
 Lines 1480-1493    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;
}
}