diff options
| author | John Baldwin <jhb@FreeBSD.org> | 2003-03-12 20:17:40 +0000 |
|---|---|---|
| committer | John Baldwin <jhb@FreeBSD.org> | 2003-03-12 20:17:40 +0000 |
| commit | 8510f2a8336c5d56ff3594d98a4a4502878b8773 (patch) | |
| tree | e2fb2c7cc8f44fdc31a2ade1965ab9eccfc13794 | |
| parent | fe71e0b83d1c155d04c2d1605b082158e2ca12eb (diff) | |
Notes
| -rw-r--r-- | sys/kern/kern_proc.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c index bbd080e3f434..84b3fc180eb1 100644 --- a/sys/kern/kern_proc.c +++ b/sys/kern/kern_proc.c @@ -1024,8 +1024,8 @@ sysctl_kern_proc_args(SYSCTL_HANDLER_ARGS) { int *name = (int*) arg1; u_int namelen = arg2; + struct pargs *newpa, *pa; struct proc *p; - struct pargs *pa, *newpa; int error = 0; if (namelen != 1) @@ -1048,23 +1048,20 @@ sysctl_kern_proc_args(SYSCTL_HANDLER_ARGS) pa = p->p_args; pargs_hold(pa); PROC_UNLOCK(p); - if (req->oldptr && pa != NULL) { + if (req->oldptr != NULL && pa != NULL) error = SYSCTL_OUT(req, pa->ar_args, pa->ar_length); - } pargs_drop(pa); - if (req->newptr == NULL) + if (error != 0 || req->newptr == NULL) return (error); if (req->newlen + sizeof(struct pargs) > ps_arg_cache_limit) - return (error); - + return (ENOMEM); newpa = pargs_alloc(req->newlen); error = SYSCTL_IN(req, newpa->ar_args, req->newlen); - if (error) { + if (error != 0) { pargs_free(newpa); return (error); } - PROC_LOCK(p); pa = p->p_args; p->p_args = newpa; |
