summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_subr.c
diff options
context:
space:
mode:
authoralfred <alfred@FreeBSD.org>2004-07-04 20:21:58 +0000
committeralfred <alfred@FreeBSD.org>2004-07-04 20:21:58 +0000
commit95f8f1e08906224cb7baf7d920a0142b89d31df9 (patch)
tree9d2007726443ab5cdd8e0ab52e88018e0bff3346 /sys/kern/vfs_subr.c
parent965edb055fbb2fcf83e4a055793392433495c5fb (diff)
downloadFreeBSD-src-95f8f1e08906224cb7baf7d920a0142b89d31df9.zip
FreeBSD-src-95f8f1e08906224cb7baf7d920a0142b89d31df9.tar.gz
Pass the operation in with the fsidctl.
Remove some fsidctls that we will not be using. Correct prototypes for fs sysctls.
Diffstat (limited to 'sys/kern/vfs_subr.c')
-rw-r--r--sys/kern/vfs_subr.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 7e56575..a542c7c 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -3960,12 +3960,18 @@ sysctl_vfs_ctl(SYSCTL_HANDLER_ARGS)
error = SYSCTL_IN(req, &vc, sizeof(vc));
if (error)
return (error);
-
+ if (vc.vc_vers != VFS_CTL_VERS1)
+ return (EINVAL);
mp = vfs_getvfs(&vc.vc_fsid);
if (mp == NULL)
return (ENOENT);
+ /* ensure that a specific sysctl goes to the right filesystem. */
+ if (strcmp(vc.vc_fstypename, "*") != 0 &&
+ strcmp(vc.vc_fstypename, mp->mnt_vfc->vfc_name) != 0) {
+ return (EINVAL);
+ }
VCTLTOREQ(&vc, req);
- return (VFS_SYSCTL(mp, req));
+ return (VFS_SYSCTL(mp, vc.vc_op, req));
}
SYSCTL_PROC(_vfs, OID_AUTO, ctl, CTLFLAG_RD,
OpenPOWER on IntegriCloud