diff options
author | John Baldwin <jhb@FreeBSD.org> | 2017-09-21 23:05:32 +0000 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2017-09-21 23:05:32 +0000 |
commit | e1d15b892a3dd9e0b05a23c8248ccac86aee0493 (patch) | |
tree | 8b6f0e75b1c0a8c0312095e71524d1a494efc130 | |
parent | ed8d06aa19869ab382d5a554bf9ea9120afdd096 (diff) | |
download | src-e1d15b892a3dd9e0b05a23c8248ccac86aee0493.tar.gz src-e1d15b892a3dd9e0b05a23c8248ccac86aee0493.zip |
Only handle _PC_MAX_CANON, _PC_MAX_INPUT, and _PC_VDISABLE for TTY devices.
Move handling of these three pathconf() variables out of vop_stdpathconf()
and into devfs_pathconf() as TTY devices can only be devfs files. In
addition, only return settings for these three variables for devfs devices
whose device switch has the D_TTY flag set.
Discussed with: bde, kib
Sponsored by: Chelsio Communications
Notes
Notes:
svn path=/head/; revision=323882
-rw-r--r-- | sys/fs/devfs/devfs_vnops.c | 18 | ||||
-rw-r--r-- | sys/kern/vfs_default.c | 9 |
2 files changed, 18 insertions, 9 deletions
diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c index 18b962eadffc..b30b65e2e582 100644 --- a/sys/fs/devfs/devfs_vnops.c +++ b/sys/fs/devfs/devfs_vnops.c @@ -1178,6 +1178,24 @@ devfs_pathconf(struct vop_pathconf_args *ap) { switch (ap->a_name) { + case _PC_MAX_CANON: + if (ap->a_vp->v_vflag & VV_ISTTY) { + *ap->a_retval = MAX_CANON; + return (0); + } + return (EINVAL); + case _PC_MAX_INPUT: + if (ap->a_vp->v_vflag & VV_ISTTY) { + *ap->a_retval = MAX_INPUT; + return (0); + } + return (EINVAL); + case _PC_VDISABLE: + if (ap->a_vp->v_vflag & VV_ISTTY) { + *ap->a_retval = _POSIX_VDISABLE; + return (0); + } + return (EINVAL); case _PC_MAC_PRESENT: #ifdef MAC /* diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c index 5c343e7f3ffc..608cbad1ffc8 100644 --- a/sys/kern/vfs_default.c +++ b/sys/kern/vfs_default.c @@ -486,21 +486,12 @@ vop_stdpathconf(ap) case _PC_LINK_MAX: *ap->a_retval = LINK_MAX; return (0); - case _PC_MAX_CANON: - *ap->a_retval = MAX_CANON; - return (0); - case _PC_MAX_INPUT: - *ap->a_retval = MAX_INPUT; - return (0); case _PC_PIPE_BUF: *ap->a_retval = PIPE_BUF; return (0); case _PC_CHOWN_RESTRICTED: *ap->a_retval = 1; return (0); - case _PC_VDISABLE: - *ap->a_retval = _POSIX_VDISABLE; - return (0); default: return (EINVAL); } |