diff options
author | alfred <alfred@FreeBSD.org> | 2004-07-04 20:21:58 +0000 |
---|---|---|
committer | alfred <alfred@FreeBSD.org> | 2004-07-04 20:21:58 +0000 |
commit | 95f8f1e08906224cb7baf7d920a0142b89d31df9 (patch) | |
tree | 9d2007726443ab5cdd8e0ab52e88018e0bff3346 /sys/kern/vfs_subr.c | |
parent | 965edb055fbb2fcf83e4a055793392433495c5fb (diff) | |
download | FreeBSD-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.c | 10 |
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, |