summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authordg <dg@FreeBSD.org>1996-06-03 04:12:18 +0000
committerdg <dg@FreeBSD.org>1996-06-03 04:12:18 +0000
commitdc263de99538080ba11bd1f0a55685c1bc49cba5 (patch)
tree5654ba66feafa2793b7c096197d7cefc67738018 /sys/kern
parentfc1107cd119c01adb471939ab7f813fc3507ac4a (diff)
downloadFreeBSD-src-dc263de99538080ba11bd1f0a55685c1bc49cba5.zip
FreeBSD-src-dc263de99538080ba11bd1f0a55685c1bc49cba5.tar.gz
Use kmem_alloc_wait/kmem_free_wakeup() to avoid allocation failures
from running out of string space in the exec_map.
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/kern_exec.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c
index eb3ee87..137f9d2 100644
--- a/sys/kern/kern_exec.c
+++ b/sys/kern/kern_exec.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: kern_exec.c,v 1.41 1996/05/18 03:37:01 dyson Exp $
+ * $Id: kern_exec.c,v 1.42 1996/06/03 04:07:35 davidg Exp $
*/
#include <sys/param.h>
@@ -123,7 +123,7 @@ execve(p, uap, retval)
* Allocate temporary demand zeroed space for argument and
* environment strings
*/
- imgp->stringbase = (char *)kmem_alloc_pageable(exec_map, ARG_MAX);
+ imgp->stringbase = (char *)kmem_alloc_wait(exec_map, ARG_MAX);
if (imgp->stringbase == NULL) {
error = ENOMEM;
goto exec_fail;
@@ -143,7 +143,7 @@ interpret:
error = namei(ndp);
if (error) {
- kmem_free(exec_map, (vm_offset_t)imgp->stringbase, ARG_MAX);
+ kmem_free_wakeup(exec_map, (vm_offset_t)imgp->stringbase, ARG_MAX);
goto exec_fail;
}
@@ -318,7 +318,7 @@ interpret:
/*
* free various allocated resources
*/
- kmem_free(exec_map, (vm_offset_t)imgp->stringbase, ARG_MAX);
+ kmem_free_wakeup(exec_map, (vm_offset_t)imgp->stringbase, ARG_MAX);
if (vm_map_remove(exech_map, (vm_offset_t)imgp->image_header,
(vm_offset_t)imgp->image_header + PAGE_SIZE))
panic("execve: header dealloc failed (2)");
@@ -329,7 +329,7 @@ interpret:
exec_fail_dealloc:
if (imgp->stringbase != NULL)
- kmem_free(exec_map, (vm_offset_t)imgp->stringbase, ARG_MAX);
+ kmem_free_wakeup(exec_map, (vm_offset_t)imgp->stringbase, ARG_MAX);
if (imgp->image_header && imgp->image_header != (char *)-1)
if (vm_map_remove(exech_map, (vm_offset_t)imgp->image_header,
(vm_offset_t)imgp->image_header + PAGE_SIZE))
OpenPOWER on IntegriCloud