summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_exec.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/kern_exec.c')
-rw-r--r--sys/kern/kern_exec.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c
index 8e88de6..fe0be73 100644
--- a/sys/kern/kern_exec.c
+++ b/sys/kern/kern_exec.c
@@ -441,8 +441,7 @@ interpret:
pa = p->p_args;
p->p_args = NULL;
PROC_UNLOCK(p);
- if (pa != NULL && --pa->ar_ref == 0)
- FREE(pa, M_PARGS);
+ pargs_drop(pa);
/* Set values passed into the program in registers. */
setregs(td, imgp->entry_addr, (u_long)(uintptr_t)stack_base,
@@ -451,10 +450,7 @@ interpret:
/* Cache arguments if they fit inside our allowance */
i = imgp->endargs - imgp->stringbase;
if (ps_arg_cache_limit >= i + sizeof(struct pargs)) {
- MALLOC(pa, struct pargs *, sizeof(struct pargs) + i,
- M_PARGS, M_WAITOK);
- pa->ar_ref = 1;
- pa->ar_length = i;
+ pa = pargs_alloc(i);
bcopy(imgp->stringbase, pa->ar_args, i);
PROC_LOCK(p);
p->p_args = pa;
OpenPOWER on IntegriCloud