diff options
Diffstat (limited to 'sys/fs/fifofs/fifo_vnops.c')
-rw-r--r-- | sys/fs/fifofs/fifo_vnops.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/fs/fifofs/fifo_vnops.c b/sys/fs/fifofs/fifo_vnops.c index 71ba03c..4494871 100644 --- a/sys/fs/fifofs/fifo_vnops.c +++ b/sys/fs/fifofs/fifo_vnops.c @@ -224,11 +224,13 @@ fifo_open(ap) if (fip->fi_writers == 1) { SOCK_LOCK(fip->fi_readsock); fip->fi_readsock->so_state &= ~SS_CANTRCVMORE; + SOCK_UNLOCK(fip->fi_readsock); if (fip->fi_readers > 0) { wakeup((caddr_t)&fip->fi_readers); + SOCK_LOCK(fip->fi_writesock); sorwakeup(fip->fi_writesock); + SOCK_UNLOCK(fip->fi_writesock); } - SOCK_UNLOCK(fip->fi_readsock); } } if ((ap->a_mode & FREAD) && (ap->a_mode & O_NONBLOCK) == 0) { |