From 58e8af1bf570791d6e9eb4d063ebe4d5d1a6cae2 Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Fri, 25 Jul 2008 11:55:32 +0000 Subject: [PATCH] Call pargs_drop() unconditionally in do_execve(), the function correctly handles the NULL argument. Make pargs_free() static. MFC after: 1 week --- sys/kern/kern_exec.c | 6 ++---- sys/kern/kern_proc.c | 3 ++- sys/sys/proc.h | 1 - 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c index e31ca37bff2..b4f3ccc080f 100644 --- a/sys/kern/kern_exec.c +++ b/sys/kern/kern_exec.c @@ -832,10 +832,8 @@ done1: crfree(tracecred); #endif vn_lock(imgp->vp, LK_EXCLUSIVE | LK_RETRY); - if (oldargs != NULL) - pargs_drop(oldargs); - if (newargs != NULL) - pargs_drop(newargs); + pargs_drop(oldargs); + pargs_drop(newargs); if (oldsigacts != NULL) sigacts_free(oldsigacts); diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c index 078d05777c7..34ffaf1c8d6 100644 --- a/sys/kern/kern_proc.c +++ b/sys/kern/kern_proc.c @@ -123,6 +123,7 @@ static int proc_ctor(void *mem, int size, void *arg, int flags); static void proc_dtor(void *mem, int size, void *arg); static int proc_init(void *mem, int size, int flags); static void proc_fini(void *mem, int size); +static void pargs_free(struct pargs *pa); /* * Other process lists @@ -1177,7 +1178,7 @@ pargs_alloc(int len) return (pa); } -void +static void pargs_free(struct pargs *pa) { diff --git a/sys/sys/proc.h b/sys/sys/proc.h index fa1029108b3..654e3bf8fc1 100644 --- a/sys/sys/proc.h +++ b/sys/sys/proc.h @@ -797,7 +797,6 @@ int p_cansignal(struct thread *td, struct proc *p, int signum); int p_canwait(struct thread *td, struct proc *p); struct pargs *pargs_alloc(int len); void pargs_drop(struct pargs *pa); -void pargs_free(struct pargs *pa); void pargs_hold(struct pargs *pa); void procinit(void); void proc_linkup0(struct proc *p, struct thread *td);