summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2003-03-12 20:17:40 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2003-03-12 20:17:40 +0000
commit8510f2a8336c5d56ff3594d98a4a4502878b8773 (patch)
treee2fb2c7cc8f44fdc31a2ade1965ab9eccfc13794
parentfe71e0b83d1c155d04c2d1605b082158e2ca12eb (diff)
Notes
-rw-r--r--sys/kern/kern_proc.c13
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;