From e1a32fd42be4ac4b388e260847ea5fcce3da2bcb Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Mon, 7 Jul 2008 09:15:29 +0000 Subject: [PATCH] The r178914 I erronously put the setting of the KQ_FLUXWAIT flag before KQ_FLUX_WAKEUP(). Since the later macro clears the KQ_FLUXWAIT, the kqueue_scan() thread may be not woken up. Move the setting of KQ_FLUXWAIT after wakeup to correct the issue. Reported and tested by: pho MFC after: 3 days --- sys/kern/kern_event.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c index b031fa00a76a..36331be417fd 100644 --- a/sys/kern/kern_event.c +++ b/sys/kern/kern_event.c @@ -1211,12 +1211,11 @@ start: if ((kn->kn_status == KN_MARKER && kn != marker) || (kn->kn_status & KN_INFLUX) == KN_INFLUX) { - kq->kq_state |= KQ_FLUXWAIT; if (influx) { influx = 0; KQ_FLUX_WAKEUP(kq); } - + kq->kq_state |= KQ_FLUXWAIT; error = msleep(kq, &kq->kq_lock, PSOCK, "kqflxwt", 0); continue;