kqueue: Fix termination assert
authorvisa <visa@openbsd.org>
Wed, 27 Jan 2021 02:58:03 +0000 (02:58 +0000)
committervisa <visa@openbsd.org>
Wed, 27 Jan 2021 02:58:03 +0000 (02:58 +0000)
commit715db9d67ba37ce7fc5743a27870b51982740725
tree6e1d1add8bbf938af17286f50d8d2c0eb2071bb3
parentd0bb67025f277d27d0f5e62d2209966810262596
kqueue: Fix termination assert

When a kqueue file is closed, the kqueue can still have threads
scanning it. Consequently, kqueue_terminate() can see scan markers
in the event queue. These markers are removed when the scanning threads
leave the kqueue. Take this into account when checking the queue's
state, to avoid a panic when kqueue is closed from under a thread.

OK anton@

Reported-by: syzbot+757c60a2aa1125137cce@syzkaller.appspotmail.com
sys/kern/kern_event.c