summaryrefslogtreecommitdiff
path: root/sys/kern/tty_tty.c
diff options
context:
space:
mode:
authorKirk McKusick <mckusick@FreeBSD.org>2000-07-11 22:07:57 +0000
committerKirk McKusick <mckusick@FreeBSD.org>2000-07-11 22:07:57 +0000
commitf2a2857bb34f5525f21ad016c25b20348d7a1fab (patch)
treeca1f94a427c4ab94cb5de2c2a7b557655d1a6376 /sys/kern/tty_tty.c
parentaa02fb5729dd652fa1da3f9e8e1152cca9010a1c (diff)
Notes
Diffstat (limited to 'sys/kern/tty_tty.c')
-rw-r--r--sys/kern/tty_tty.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/kern/tty_tty.c b/sys/kern/tty_tty.c
index 2d15c70140d3..66f7a7bd8236 100644
--- a/sys/kern/tty_tty.c
+++ b/sys/kern/tty_tty.c
@@ -133,13 +133,19 @@ cttywrite(dev, uio, flag)
{
struct proc *p = uio->uio_procp;
struct vnode *ttyvp = cttyvp(uio->uio_procp);
+ struct mount *mp;
int error;
if (ttyvp == NULL)
return (EIO);
+ mp = NULL;
+ if (ttyvp->v_type != VCHR &&
+ (error = vn_start_write(ttyvp, &mp, V_WAIT | PCATCH)) != 0)
+ return (error);
vn_lock(ttyvp, LK_EXCLUSIVE | LK_RETRY, p);
error = VOP_WRITE(ttyvp, uio, flag, NOCRED);
VOP_UNLOCK(ttyvp, 0, p);
+ vn_finished_write(mp);
return (error);
}