aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2017-09-21 23:05:32 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2017-09-21 23:05:32 +0000
commite1d15b892a3dd9e0b05a23c8248ccac86aee0493 (patch)
tree8b6f0e75b1c0a8c0312095e71524d1a494efc130
parented8d06aa19869ab382d5a554bf9ea9120afdd096 (diff)
downloadsrc-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.c18
-rw-r--r--sys/kern/vfs_default.c9
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);
}