CVSROOT:        /cvs
Module name:    src
Changes by:     v...@cvs.openbsd.org    2020/07/04 02:33:43

Modified files:
        sys/kern       : kern_event.c 

Log message:
Use klist_invalidate() in knote_processexit()

This leaves knote_remove() for kqueue's internal use. As a result,
knote_remove() is used to drop knotes from the knlist of a single
kqueue instance. klist_invalidate() clears knotes from a klist that
can contain entries from different kqueue instances.

Use FILTEROP_ISFD to control how klist_invalidate() treats knotes,
to preserve the current behaviour of knote_processexit(). All the
existing callers of klist_invalidate() are fd-based. The existing code
rewires and activates knotes to give userspace a clear indication that
the state of the fd has changed. In knote_processexit(), any remaining
knotes in ps_klist are non-fd-based (EVFILT_SIGNAL). Those are dropped
without notifying userspace.

OK mpi@

Reply via email to