On Fri, Jun 16, 2023 at 02:09:41PM +0000, Visa Hankala wrote: > > On Fri, Jun 16, 2023 at 04:06:58PM +0300, Vitaliy Makkoveev wrote: > > According your photo, panic occurred in filt_wseventdetach(). > > The following tweak might help. > > This code gets called indirectly through vdevgone() when a ws device > is detached. In principle, another thread could register a new event > with the device after the klist_invalidate() before the vnode clearing > takes effect in full. However, it looks that the callers > of wsevent_kqfilter() bail out if me_evp is NULL. The ws device close > routines clear this pointer before calling wsevent_fini(). > > Index: dev/wscons/wsevent.c > =================================================================== > RCS file: src/sys/dev/wscons/wsevent.c,v > retrieving revision 1.26 > diff -u -p -r1.26 wsevent.c > --- dev/wscons/wsevent.c 2 Jul 2022 08:50:42 -0000 1.26 > +++ dev/wscons/wsevent.c 16 Jun 2023 13:53:52 -0000 > @@ -134,6 +134,8 @@ wsevent_fini(struct wseventvar *ev) > free(ev->q, M_DEVBUF, WSEVENT_QSIZE * sizeof(struct wscons_event)); > ev->q = NULL; > > + klist_invalidate(&ev->sel.si_note); > + > sigio_free(&ev->sigio); > } > >
I suggested this. Makes sense in any case. > > On Fri, Jun 16, 2023 at 04:06:58PM +0300, Vitaliy Makkoveev wrote: > > ... To me it seems the reason is the missing klist_invalidate() > > call in the ukbd detach sequence.