--- exec-shield-nx-2.6.7-A0.org 2004-06-27 03:39:46.397788416 +0200 +++ exec-shield-nx-2.6.7-A0 2004-06-27 03:44:09.132846616 +0200 @@ -999,12 +999,12 @@ #include struct exec_domain; + struct linux_binprm; +extern int exec_shield; +extern int exec_shield_randomize; +extern int print_fatal_signals; /* - * cloning flags: @@ -194,6 +197,8 @@ struct mm_struct { struct rb_root mm_rb; struct vm_area_struct * mmap_cache; /* last find_vma result */ @@ -2168,23 +2168,23 @@ /* * vma is the first one with address > vma->vm_end. Have to extend vma. @@ -1210,7 +1224,7 @@ int expand_stack(struct vm_area_struct * - return -ENOMEM; - } - + if (vma->vm_flags & VM_LOCKED) + gr_learn_resource(current, RLIMIT_MEMLOCK, (vma->vm_mm->locked_vm + grow) << PAGE_SHIFT, 1); + - if (address - vma->vm_start > current->rlim[RLIMIT_STACK].rlim_cur || + if (over_stack_limit(address - vma->vm_start) || ((vma->vm_mm->total_vm + grow) << PAGE_SHIFT) > - current->rlim[RLIMIT_AS].rlim_cur) { - anon_vma_unlock(vma); + current->rlim[RLIMIT_AS].rlim_cur || + ((vma->vm_flags & VM_LOCKED) && @@ -1271,7 +1285,7 @@ int expand_stack(struct vm_area_struct * - return -ENOMEM; - } - + if (vma->vm_flags & VM_LOCKED) + gr_learn_resource(current, RLIMIT_MEMLOCK, (vma->vm_mm->locked_vm + grow) << PAGE_SHIFT, 1); + - if (vma->vm_end - address > current->rlim[RLIMIT_STACK].rlim_cur || + if (over_stack_limit(vma->vm_end - address) || ((vma->vm_mm->total_vm + grow) << PAGE_SHIFT) > - current->rlim[RLIMIT_AS].rlim_cur) { - anon_vma_unlock(vma); + current->rlim[RLIMIT_AS].rlim_cur || + ((vma->vm_flags & VM_LOCKED) && @@ -1384,6 +1398,7 @@ no_mmaps: static void unmap_vma(struct mm_struct *mm, struct vm_area_struct *area) {