CVSROOT:        /cvs
Module name:    src
Changes by:     js...@cvs.openbsd.org   2015/10/29 07:20:44

Modified files:
        sys/kern       : kern_event.c 

Log message:
In knote(), use SLIST_FOREACH_SAFE when walking the klist since a call to
an f_event() handler may remove an entry.

Currently knote_processexit() calls knote() with NOTE_EXIT, knote() walks
the list and calls f_event(), one of these happens to be filt_proc(), which
happily SLIST_REMOVEs the NOTE_EXIT note from the same list that knote() is
currently walking, then we get back to knote() and go boom...

Flushed out by bluhm@'s invalidation change to sys/queue.h and found the
hard way by naddy@.

ok doug@ nicm@ tedu@

Reply via email to