summaryrefslogtreecommitdiffstats
path: root/sys/fs/fifofs
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2005-09-25 19:52:09 +0000
committerrwatson <rwatson@FreeBSD.org>2005-09-25 19:52:09 +0000
commitc9044f078d53ad37fc45327bb7bbcfbd35a0c8cf (patch)
tree3f79e0ce4d6946b9d850e0782ff922202342e994 /sys/fs/fifofs
parent9b57d498dbcc565f233584e6c1cf8b14048d4cc0 (diff)
downloadFreeBSD-src-c9044f078d53ad37fc45327bb7bbcfbd35a0c8cf.zip
FreeBSD-src-c9044f078d53ad37fc45327bb7bbcfbd35a0c8cf.tar.gz
Lock the read socket receive buffer when frobbing the sb_state flag on
that socket during open, not the write socket receive buffer. This might explain clearing of the sb_state SB_LOCK flag seen occasionally in soreceive() on fifos. MFC after: 3 days Spotted by: ups
Diffstat (limited to 'sys/fs/fifofs')
-rw-r--r--sys/fs/fifofs/fifo_vnops.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/fs/fifofs/fifo_vnops.c b/sys/fs/fifofs/fifo_vnops.c
index f47b826..8c43e78 100644
--- a/sys/fs/fifofs/fifo_vnops.c
+++ b/sys/fs/fifofs/fifo_vnops.c
@@ -247,9 +247,9 @@ fail1:
}
fip->fi_writers++;
if (fip->fi_writers == 1) {
- SOCKBUF_LOCK(&fip->fi_writesock->so_rcv);
+ SOCKBUF_LOCK(&fip->fi_readsock->so_rcv);
fip->fi_readsock->so_rcv.sb_state &= ~SBS_CANTRCVMORE;
- SOCKBUF_UNLOCK(&fip->fi_writesock->so_rcv);
+ SOCKBUF_UNLOCK(&fip->fi_readsock->so_rcv);
if (fip->fi_readers > 0) {
wakeup(&fip->fi_readers);
sorwakeup(fip->fi_readsock);
OpenPOWER on IntegriCloud