summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/fs/specfs/specvnops.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/fs/specfs/specvnops.c')
-rw-r--r--usr/src/uts/common/fs/specfs/specvnops.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/usr/src/uts/common/fs/specfs/specvnops.c b/usr/src/uts/common/fs/specfs/specvnops.c
index 6a2d6f73d0..24c7ffedab 100644
--- a/usr/src/uts/common/fs/specfs/specvnops.c
+++ b/usr/src/uts/common/fs/specfs/specvnops.c
@@ -680,13 +680,16 @@ streams_open:
/* STREAMS devices don't have a size */
sp->s_size = csp->s_size = 0;
- /*
- * try to allocate it as a controlling terminal
- */
- if ((stp->sd_flag & STRISTTY) && !(flag & FNOCTTY))
- stralloctty(stp);
+ if (!(stp->sd_flag & STRISTTY) || (flag & FNOCTTY))
+ return (0);
- return (0);
+ /* try to allocate it as a controlling terminal */
+ if (strctty(stp) != EINTR)
+ return (0);
+
+ /* strctty() was interrupted by a signal */
+ (void) spec_close(vp, flag, 1, 0, cr);
+ return (EINTR);
}
/*