summaryrefslogtreecommitdiff
path: root/sys/kern/kern_sysctl.c
diff options
context:
space:
mode:
authorPawel Jakub Dawidek <pjd@FreeBSD.org>2004-02-22 12:31:44 +0000
committerPawel Jakub Dawidek <pjd@FreeBSD.org>2004-02-22 12:31:44 +0000
commit63dba32b76bdbc5438c5121c7209f7a8f6774b28 (patch)
tree1c4d31f4b056d45cd39f0c68f6aad1b1af2ebd1c /sys/kern/kern_sysctl.c
parent47c524ddd41a4d07b2f0d1847ff22c43babbe1ed (diff)
Notes
Diffstat (limited to 'sys/kern/kern_sysctl.c')
-rw-r--r--sys/kern/kern_sysctl.c30
1 files changed, 15 insertions, 15 deletions
diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c
index e16c890e8649..e23a5912f4d0 100644
--- a/sys/kern/kern_sysctl.c
+++ b/sys/kern/kern_sysctl.c
@@ -1175,12 +1175,21 @@ sysctl_root(SYSCTL_HANDLER_ARGS)
if (!oid->oid_handler)
return EINVAL;
- if ((oid->oid_kind & CTLTYPE) == CTLTYPE_NODE)
- error = oid->oid_handler(oid, (int *)arg1 + indx, arg2 - indx,
- req);
- else
- error = oid->oid_handler(oid, oid->oid_arg1, oid->oid_arg2,
- req);
+ if ((oid->oid_kind & CTLTYPE) == CTLTYPE_NODE) {
+ (int *)arg1 += indx;
+ arg2 -= indx;
+ } else {
+ arg1 = oid->oid_arg1;
+ arg2 = oid->oid_arg2;
+ }
+#ifdef MAC
+ error = mac_check_system_sysctl(req->td->td_ucred, oid, arg1, arg2,
+ req);
+ if (error != 0)
+ return (error);
+#endif
+ error = oid->oid_handler(oid, arg1, arg2, req);
+
return (error);
}
@@ -1272,15 +1281,6 @@ userland_sysctl(struct thread *td, int *name, u_int namelen, void *old,
SYSCTL_LOCK();
-#ifdef MAC
- error = mac_check_system_sysctl(td->td_ucred, name, namelen, old,
- oldlenp, inkernel, new, newlen);
- if (error) {
- SYSCTL_UNLOCK();
- return (error);
- }
-#endif
-
do {
req2 = req;
error = sysctl_root(0, name, namelen, &req2);