summaryrefslogtreecommitdiffstats
path: root/sys/fs/fifofs
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2005-09-13 10:39:24 +0000
committerrwatson <rwatson@FreeBSD.org>2005-09-13 10:39:24 +0000
commitafc7b6e916b3897bb67067a19d53ea1f5129f3c0 (patch)
tree8deb96ebef1b82b7596d23f5e4861ba0695311fb /sys/fs/fifofs
parent5dc127c9e22ec7dffdad6513921160d271fb365f (diff)
downloadFreeBSD-src-afc7b6e916b3897bb67067a19d53ea1f5129f3c0.zip
FreeBSD-src-afc7b6e916b3897bb67067a19d53ea1f5129f3c0.tar.gz
As a result of kqueue locking work, socket buffer locks will always
be held when entering a kqueue filter for fifos via a socket buffer event: as such, assert the lock unconditionally rather than acquiring it conditionall. MFC after: 3 days
Diffstat (limited to 'sys/fs/fifofs')
-rw-r--r--sys/fs/fifofs/fifo_vnops.c24
1 files changed, 6 insertions, 18 deletions
diff --git a/sys/fs/fifofs/fifo_vnops.c b/sys/fs/fifofs/fifo_vnops.c
index f0dfd00..fddcabb 100644
--- a/sys/fs/fifofs/fifo_vnops.c
+++ b/sys/fs/fifofs/fifo_vnops.c
@@ -393,22 +393,16 @@ static int
filt_fiforead(struct knote *kn, long hint)
{
struct socket *so = (struct socket *)kn->kn_hook;
- int need_lock, result;
- need_lock = !SOCKBUF_OWNED(&so->so_rcv);
- if (need_lock)
- SOCKBUF_LOCK(&so->so_rcv);
+ SOCKBUF_LOCK_ASSERT(&so->so_rcv);
kn->kn_data = so->so_rcv.sb_cc;
if (so->so_rcv.sb_state & SBS_CANTRCVMORE) {
kn->kn_flags |= EV_EOF;
- result = 1;
+ return (1);
} else {
kn->kn_flags &= ~EV_EOF;
- result = (kn->kn_data > 0);
+ return (kn->kn_data > 0);
}
- if (need_lock)
- SOCKBUF_UNLOCK(&so->so_rcv);
- return (result);
}
static void
@@ -427,22 +421,16 @@ static int
filt_fifowrite(struct knote *kn, long hint)
{
struct socket *so = (struct socket *)kn->kn_hook;
- int need_lock, result;
- need_lock = !SOCKBUF_OWNED(&so->so_snd);
- if (need_lock)
- SOCKBUF_LOCK(&so->so_snd);
+ SOCKBUF_LOCK_ASSERT(&so->so_snd);
kn->kn_data = sbspace(&so->so_snd);
if (so->so_snd.sb_state & SBS_CANTSENDMORE) {
kn->kn_flags |= EV_EOF;
- result = 1;
+ return (1);
} else {
kn->kn_flags &= ~EV_EOF;
- result = (kn->kn_data >= so->so_snd.sb_lowat);
+ return (kn->kn_data >= so->so_snd.sb_lowat);
}
- if (need_lock)
- SOCKBUF_UNLOCK(&so->so_snd);
- return (result);
}
static void
OpenPOWER on IntegriCloud