--- ./kernel/fork.c.orig Sun Oct 26 11:40:02 2003 +++ ./kernel/fork.c Sun Oct 26 15:27:45 2003 @@ -757,8 +757,12 @@ goto bad_fork_cleanup_namespace; p->semundo = NULL; - if (p->mm && !(clone_flags & CLONE_VM)) - ctx_pages_add(p->mm->mm_s_info, RLIMIT_AS, p->mm->total_vm); + if (p->mm && !(clone_flags & CLONE_VM)) { + if (ctx_pages_avail(p->mm, p->mm->total_vm)) + ctx_pages_add(p->mm->mm_s_info, RLIMIT_AS, p->mm->total_vm); + else + goto bad_fork_cleanup_namespace; + } /* Our parent execution domain becomes current domain These must match for thread signalling to apply */