diff --git a/sys/kern/tty.c b/sys/kern/tty.c --- a/sys/kern/tty.c +++ b/sys/kern/tty.c @@ -2083,6 +2083,8 @@ FILEDESC_SLOCK(fdp); error = fget_cap_locked(fdp, fd, cap_rights_init_one(&rights, CAP_TTYHOOK), &fp, NULL); + if (error == 0 && !fhold(fp)) + error = EBADF; FILEDESC_SUNLOCK(fdp); if (error != 0) return (error);