summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_fork.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2008-03-20 15:24:49 +0000
committerkib <kib@FreeBSD.org>2008-03-20 15:24:49 +0000
commit28174d9ffb5ad8d8298c439ab1a15ccf2c48d6ea (patch)
treef582ce6ed8c98e3544ab6a358402e13e51d89d5e /sys/kern/kern_fork.c
parentf0a936f08baa3af224589d4dd8639a7e2a25a173 (diff)
downloadFreeBSD-src-28174d9ffb5ad8d8298c439ab1a15ccf2c48d6ea.zip
FreeBSD-src-28174d9ffb5ad8d8298c439ab1a15ccf2c48d6ea.tar.gz
Fix the leak of the vmspace on the fork when the process limits
are exceeded. Pointy hat to: me MFC after: 3 days
Diffstat (limited to 'sys/kern/kern_fork.c')
-rw-r--r--sys/kern/kern_fork.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c
index 93f88f1..7dc42f4 100644
--- a/sys/kern/kern_fork.c
+++ b/sys/kern/kern_fork.c
@@ -256,6 +256,7 @@ norfproc_fail:
* however it proved un-needed and caused problems
*/
+ vm2 = NULL;
/* Allocate new proc. */
newproc = uma_zalloc(proc_zone, M_WAITOK);
if (TAILQ_EMPTY(&newproc->p_threads)) {
@@ -281,8 +282,7 @@ norfproc_fail:
error = ENOMEM;
goto fail1;
}
- } else
- vm2 = NULL;
+ }
#ifdef MAC
mac_proc_init(newproc);
#endif
@@ -740,6 +740,8 @@ fail:
mac_proc_destroy(newproc);
#endif
fail1:
+ if (vm2 != NULL)
+ vmspace_free(vm2);
uma_zfree(proc_zone, newproc);
pause("fork", hz / 2);
return (error);
OpenPOWER on IntegriCloud