--- linux/include/linux/mm.h.orig Fri Jul 28 11:01:53 2000 +++ linux/include/linux/mm.h Fri Jul 28 11:32:00 2000 @@ -469,13 +469,16 @@ address &= PAGE_MASK; grow = (vma->vm_start - address) >> PAGE_SHIFT; if (vma->vm_end - address > current->rlim[RLIMIT_STACK].rlim_cur || - ((vma->vm_mm->total_vm + grow) << PAGE_SHIFT) > current->rlim[RLIMIT_AS].rlim_cur) + ((vma->vm_mm->total_vm + grow) << PAGE_SHIFT) > current->rlim[RLIMIT_AS].rlim_cur || + ((vma->vm_mm->locked_vm + grow) << PAGE_SHIFT) > current->rlim[RLIMIT_MEMLOCK].rlim_cur) return -ENOMEM; vma->vm_start = address; vma->vm_pgoff -= grow; vma->vm_mm->total_vm += grow; - if (vma->vm_flags & VM_LOCKED) + if (vma->vm_flags & VM_LOCKED) { vma->vm_mm->locked_vm += grow; + make_pages_present(address, address + (grow << PAGE_SHIFT)); + } return 0; }