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.

Reply via email to