Clear knotes when finishing wseventvar
authorvisa <visa@openbsd.org>
Thu, 6 Jul 2023 10:16:58 +0000 (10:16 +0000)
committervisa <visa@openbsd.org>
Thu, 6 Jul 2023 10:16:58 +0000 (10:16 +0000)
commitdc2df9f71c3caaa89801d5a855853875ddbebf18
tree95d08e22ccca3f96d72cd3dd320a2811043e71ae
parentb8bce0ff81d21af30bab34eee5b45a1f5f6f19df
Clear knotes when finishing wseventvar

When finishing a wseventvar in wsevent_fini(), clear the klist.
Otherwise knotes can be left dangling, which can crash the kernel.

In general, klist_invalidate() should happen after vdevgone() in order
to avoid a race with kevent registration. However, the current wscons
drivers clear the wsevent pointer (sc->sc_base.me_evp) before calling
wsevent_fini(). This prevents the drivers from registering new kevents.

Prompted by a report by Peter J. Philipp on bugs@

OK mvs@ miod@
sys/dev/wscons/wsevent.c