Instead of redefining a custom `filterop' with the same `f_event' handler pointing to filt_seltrue() simply use seltrue_kqfilter().
Ok? Index: dev/usb/ugen.c =================================================================== RCS file: /cvs/src/sys/dev/usb/ugen.c,v retrieving revision 1.105 diff -u -p -r1.105 ugen.c --- dev/usb/ugen.c 7 Apr 2020 13:27:51 -0000 1.105 +++ dev/usb/ugen.c 11 May 2020 09:17:34 -0000 @@ -1342,13 +1342,6 @@ const struct filterops ugenread_isoc_fil .f_event = filt_ugenread_isoc, }; -const struct filterops ugen_seltrue_filtops = { - .f_flags = FILTEROP_ISFD, - .f_attach = NULL, - .f_detach = filt_ugenrdetach, - .f_event = filt_seltrue, -}; - int ugenkqfilter(dev_t dev, struct knote *kn) { @@ -1378,13 +1371,11 @@ ugenkqfilter(dev_t dev, struct knote *kn kn->kn_fop = &ugenread_isoc_filtops; break; case UE_BULK: - /* + /* * We have no easy way of determining if a read will * yield any data or a write will happen. - * So, emulate "seltrue". */ - kn->kn_fop = &ugen_seltrue_filtops; - break; + return (seltrue_kqfilter(dev, kn)); default: return (EINVAL); } @@ -1402,10 +1393,8 @@ ugenkqfilter(dev_t dev, struct knote *kn /* * We have no easy way of determining if a read will * yield any data or a write will happen. - * So, emulate "seltrue". */ - kn->kn_fop = &ugen_seltrue_filtops; - break; + return (seltrue_kqfilter(dev, kn)); default: return (EINVAL); } Index: dev/usb/uhid.c =================================================================== RCS file: /cvs/src/sys/dev/usb/uhid.c,v retrieving revision 1.79 diff -u -p -r1.79 uhid.c --- dev/usb/uhid.c 7 Apr 2020 13:27:51 -0000 1.79 +++ dev/usb/uhid.c 11 May 2020 09:17:34 -0000 @@ -467,13 +467,6 @@ const struct filterops uhidread_filtops .f_event = filt_uhidread, }; -const struct filterops uhid_seltrue_filtops = { - .f_flags = FILTEROP_ISFD, - .f_attach = NULL, - .f_detach = filt_uhidrdetach, - .f_event = filt_seltrue, -}; - int uhidkqfilter(dev_t dev, struct knote *kn) { @@ -494,9 +487,7 @@ uhidkqfilter(dev_t dev, struct knote *kn break; case EVFILT_WRITE: - klist = &sc->sc_rsel.si_note; - kn->kn_fop = &uhid_seltrue_filtops; - break; + return (seltrue_kqfilter(dev, kn)); default: return (EINVAL); Index: miscfs/fuse/fuse_device.c =================================================================== RCS file: /cvs/src/sys/miscfs/fuse/fuse_device.c,v retrieving revision 1.33 diff -u -p -r1.33 fuse_device.c --- miscfs/fuse/fuse_device.c 7 Apr 2020 13:27:51 -0000 1.33 +++ miscfs/fuse/fuse_device.c 11 May 2020 09:17:34 -0000 @@ -76,13 +76,6 @@ const static struct filterops fuse_rd_fi .f_event = filt_fuse_read, }; -const static struct filterops fuse_seltrue_filtops = { - .f_flags = FILTEROP_ISFD, - .f_attach = NULL, - .f_detach = filt_fuse_rdetach, - .f_event = filt_seltrue, -}; - #ifdef FUSE_DEBUG static void fuse_dump_buff(char *buff, int len) @@ -555,9 +548,7 @@ fusekqfilter(dev_t dev, struct knote *kn kn->kn_fop = &fuse_rd_filtops; break; case EVFILT_WRITE: - klist = &fd->fd_rsel.si_note; - kn->kn_fop = &fuse_seltrue_filtops; - break; + return (seltrue_kqfilter(dev, kn)); default: return (EINVAL); }