diff options
Diffstat (limited to 'usr/src/uts/common/fs/specfs/specvnops.c')
-rw-r--r-- | usr/src/uts/common/fs/specfs/specvnops.c | 15 |
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); } /* |