Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/kern Improve/fix comments, give more meaningful names fo...
details: https://anonhg.NetBSD.org/src/rev/8b84917301bf
branches: trunk
changeset: 764969:8b84917301bf
user: rmind <rmind%NetBSD.org@localhost>
date: Sat May 14 17:12:28 2011 +0000
description:
Improve/fix comments, give more meaningful names for variables.
diffstat:
sys/kern/kern_resource.c | 101 ++++++++++++++++++++++++----------------------
1 files changed, 52 insertions(+), 49 deletions(-)
diffs (224 lines):
diff -r 7b6acbe4beb5 -r 8b84917301bf sys/kern/kern_resource.c
--- a/sys/kern/kern_resource.c Sat May 14 16:46:55 2011 +0000
+++ b/sys/kern/kern_resource.c Sat May 14 17:12:28 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_resource.c,v 1.162 2011/05/01 02:46:19 christos Exp $ */
+/* $NetBSD: kern_resource.c,v 1.163 2011/05/14 17:12:28 rmind Exp $ */
/*-
* Copyright (c) 1982, 1986, 1991, 1993
@@ -37,14 +37,13 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_resource.c,v 1.162 2011/05/01 02:46:19 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_resource.c,v 1.163 2011/05/14 17:12:28 rmind Exp $");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/file.h>
#include <sys/resourcevar.h>
-#include <sys/malloc.h>
#include <sys/kmem.h>
#include <sys/namei.h>
#include <sys/pool.h>
@@ -763,10 +762,6 @@
}
/*
- * sysctl interface in five parts
- */
-
-/*
* sysctl_proc_findproc: a routine for sysctl proc subtree helpers that
* need to pick a valid process by PID.
*
@@ -855,7 +850,7 @@
node.sysctl_data = cnbuf;
error = sysctl_lookup(SYSCTLFN_CALL(&node));
- /* Return if error, or if we are only retrieving the core name. */
+ /* Return if error, or if caller is only getting the core name. */
if (error || newp == NULL) {
goto done;
}
@@ -886,129 +881,137 @@
}
/*
- * sysctl helper routine for checking/setting a process's stop flags,
- * one for fork and one for exec.
+ * sysctl_proc_stop: helper routine for checking/setting the stop flags.
*/
static int
sysctl_proc_stop(SYSCTLFN_ARGS)
{
- struct proc *ptmp;
- int i, f, error = 0;
+ struct proc *p;
+ int isset, flag, error = 0;
struct sysctlnode node;
if (namelen != 0)
- return (EINVAL);
+ return EINVAL;
/* Find the process. Hold a reference (p_reflock), if found. */
- error = sysctl_proc_findproc(l, (pid_t)name[-2], &ptmp);
+ error = sysctl_proc_findproc(l, (pid_t)name[-2], &p);
if (error)
return error;
/* XXX-elad */
- error = kauth_authorize_process(l->l_cred, KAUTH_PROCESS_CANSEE, ptmp,
+ error = kauth_authorize_process(l->l_cred, KAUTH_PROCESS_CANSEE, p,
KAUTH_ARG(KAUTH_REQ_PROCESS_CANSEE_ENTRY), NULL, NULL);
- if (error)
+ if (error) {
goto out;
+ }
+ /* Determine the flag. */
switch (rnode->sysctl_num) {
case PROC_PID_STOPFORK:
- f = PS_STOPFORK;
+ flag = PS_STOPFORK;
break;
case PROC_PID_STOPEXEC:
- f = PS_STOPEXEC;
+ flag = PS_STOPEXEC;
break;
case PROC_PID_STOPEXIT:
- f = PS_STOPEXIT;
+ flag = PS_STOPEXIT;
break;
default:
error = EINVAL;
goto out;
}
-
- i = (ptmp->p_flag & f) ? 1 : 0;
+ isset = (p->p_flag & flag) ? 1 : 0;
node = *rnode;
- node.sysctl_data = &i;
+ node.sysctl_data = &isset;
error = sysctl_lookup(SYSCTLFN_CALL(&node));
- if (error || newp == NULL)
+
+ /* Return if error, or if callers is only getting the flag. */
+ if (error || newp == NULL) {
goto out;
+ }
- mutex_enter(ptmp->p_lock);
+ /* Check if caller can set the flags. */
error = kauth_authorize_process(l->l_cred, KAUTH_PROCESS_STOPFLAG,
- ptmp, KAUTH_ARG(f), NULL, NULL);
- if (!error) {
- if (i) {
- ptmp->p_sflag |= f;
- } else {
- ptmp->p_sflag &= ~f;
- }
+ p, KAUTH_ARG(flag), NULL, NULL);
+ if (error) {
+ goto out;
}
- mutex_exit(ptmp->p_lock);
+ mutex_enter(p->p_lock);
+ if (isset) {
+ p->p_sflag |= flag;
+ } else {
+ p->p_sflag &= ~flag;
+ }
+ mutex_exit(p->p_lock);
out:
- rw_exit(&ptmp->p_reflock);
+ rw_exit(&p->p_reflock);
return error;
}
/*
- * sysctl helper routine for a process's rlimits as exposed by sysctl.
+ * sysctl_proc_plimit: helper routine to get/set rlimits of a process.
*/
static int
sysctl_proc_plimit(SYSCTLFN_ARGS)
{
- struct proc *ptmp;
+ struct proc *p;
u_int limitno;
int which, error = 0;
struct rlimit alim;
struct sysctlnode node;
if (namelen != 0)
- return (EINVAL);
+ return EINVAL;
which = name[-1];
if (which != PROC_PID_LIMIT_TYPE_SOFT &&
which != PROC_PID_LIMIT_TYPE_HARD)
- return (EINVAL);
+ return EINVAL;
limitno = name[-2] - 1;
if (limitno >= RLIM_NLIMITS)
- return (EINVAL);
+ return EINVAL;
if (name[-3] != PROC_PID_LIMIT)
- return (EINVAL);
+ return EINVAL;
/* Find the process. Hold a reference (p_reflock), if found. */
- error = sysctl_proc_findproc(l, (pid_t)name[-4], &ptmp);
+ error = sysctl_proc_findproc(l, (pid_t)name[-4], &p);
if (error)
return error;
/* XXX-elad */
- error = kauth_authorize_process(l->l_cred, KAUTH_PROCESS_CANSEE, ptmp,
+ error = kauth_authorize_process(l->l_cred, KAUTH_PROCESS_CANSEE, p,
KAUTH_ARG(KAUTH_REQ_PROCESS_CANSEE_ENTRY), NULL, NULL);
if (error)
goto out;
- /* Check if we can view limits. */
+ /* Check if caller can retrieve the limits. */
if (newp == NULL) {
error = kauth_authorize_process(l->l_cred, KAUTH_PROCESS_RLIMIT,
- ptmp, KAUTH_ARG(KAUTH_REQ_PROCESS_RLIMIT_GET), &alim,
+ p, KAUTH_ARG(KAUTH_REQ_PROCESS_RLIMIT_GET), &alim,
KAUTH_ARG(which));
if (error)
goto out;
}
+ /* Retrieve the limits. */
node = *rnode;
- memcpy(&alim, &ptmp->p_rlimit[limitno], sizeof(alim));
- if (which == PROC_PID_LIMIT_TYPE_HARD)
+ memcpy(&alim, &p->p_rlimit[limitno], sizeof(alim));
+ if (which == PROC_PID_LIMIT_TYPE_HARD) {
node.sysctl_data = &alim.rlim_max;
- else
+ } else {
node.sysctl_data = &alim.rlim_cur;
+ }
+ error = sysctl_lookup(SYSCTLFN_CALL(&node));
- error = sysctl_lookup(SYSCTLFN_CALL(&node));
+ /* Return if error, or if we are only retrieving the limits. */
if (error || newp == NULL) {
goto out;
}
- error = dosetrlimit(l, ptmp, limitno, &alim);
+ error = dosetrlimit(l, p, limitno, &alim);
out:
- rw_exit(&ptmp->p_reflock);
+ rw_exit(&p->p_reflock);
return error;
}
Home |
Main Index |
Thread Index |
Old Index