summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_exec.c
diff options
context:
space:
mode:
authordg <dg@FreeBSD.org>1995-11-13 10:45:22 +0000
committerdg <dg@FreeBSD.org>1995-11-13 10:45:22 +0000
commit20567ae86a4e2f9afc866b49a2bb194933428c02 (patch)
treebe52630029f3e811f6992e4ad83353ed5c79ff14 /sys/kern/kern_exec.c
parentb537966a0de50eac578d23974b6acb0d96c58a95 (diff)
downloadFreeBSD-src-20567ae86a4e2f9afc866b49a2bb194933428c02.zip
FreeBSD-src-20567ae86a4e2f9afc866b49a2bb194933428c02.tar.gz
Use kmem_alloc_pageable/kmem_free to allocate memory instead of individual
VM map functions.
Diffstat (limited to 'sys/kern/kern_exec.c')
-rw-r--r--sys/kern/kern_exec.c26
1 files changed, 7 insertions, 19 deletions
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c
index ad17da0..24a219c 100644
--- a/sys/kern/kern_exec.c
+++ b/sys/kern/kern_exec.c
@@ -28,7 +28,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: kern_exec.c,v 1.25 1995/11/06 12:52:32 davidg Exp $
+ * $Id: kern_exec.c,v 1.26 1995/11/12 06:42:53 bde Exp $
*/
#include <sys/param.h>
@@ -105,15 +105,8 @@ execve(p, uap, retval)
* Allocate temporary demand zeroed space for argument and
* environment strings
*/
- imgp->stringbase = (char *)vm_map_min(exec_map);
- error = vm_map_find(exec_map, NULL, 0, (vm_offset_t *)&imgp->stringbase,
- ARG_MAX, TRUE);
- if (error) {
- log(LOG_WARNING, "execve: failed to allocate string space\n");
- return (error);
- }
-
- if (!imgp->stringbase) {
+ imgp->stringbase = (char *)kmem_alloc_pageable(exec_map, ARG_MAX);
+ if (imgp->stringbase == NULL) {
error = ENOMEM;
goto exec_fail;
}
@@ -132,8 +125,7 @@ interpret:
error = namei(ndp);
if (error) {
- vm_map_remove(exec_map, (vm_offset_t)imgp->stringbase,
- (vm_offset_t)imgp->stringbase + ARG_MAX);
+ kmem_free(exec_map, (vm_offset_t)imgp->stringbase, ARG_MAX);
goto exec_fail;
}
@@ -308,9 +300,7 @@ interpret:
/*
* free various allocated resources
*/
- if (vm_map_remove(exec_map, (vm_offset_t)imgp->stringbase,
- (vm_offset_t)imgp->stringbase + ARG_MAX))
- panic("execve: string buffer dealloc failed (1)");
+ kmem_free(exec_map, (vm_offset_t)imgp->stringbase, ARG_MAX);
if (vm_map_remove(kernel_map, (vm_offset_t)imgp->image_header,
(vm_offset_t)imgp->image_header + PAGE_SIZE))
panic("execve: header dealloc failed (2)");
@@ -320,10 +310,8 @@ interpret:
return (0);
exec_fail_dealloc:
- if (imgp->stringbase && imgp->stringbase != (char *)-1)
- if (vm_map_remove(exec_map, (vm_offset_t)imgp->stringbase,
- (vm_offset_t)imgp->stringbase + ARG_MAX))
- panic("execve: string buffer dealloc failed (2)");
+ if (imgp->stringbase != NULL)
+ kmem_free(exec_map, (vm_offset_t)imgp->stringbase, ARG_MAX);
if (imgp->image_header && imgp->image_header != (char *)-1)
if (vm_map_remove(kernel_map, (vm_offset_t)imgp->image_header,
(vm_offset_t)imgp->image_header + PAGE_SIZE))
OpenPOWER on IntegriCloud