if you're in bpfclose or tun/tap close, you're the last one out. this
means that there shouldn't be anything else in poll/select/kevent/etc
because you're the last one out.

from what i can tell, tun and bpf are the only drivers that do this, and
i dont think they need to.

ok?

Index: bpf.c
===================================================================
RCS file: /cvs/src/sys/net/bpf.c,v
retrieving revision 1.209
diff -u -p -r1.209 bpf.c
--- bpf.c       13 Jan 2022 14:15:27 -0000      1.209
+++ bpf.c       16 Jan 2022 04:33:02 -0000
@@ -401,7 +401,6 @@ bpfclose(dev_t dev, int flag, int mode, 
        d = bpfilter_lookup(minor(dev));
        mtx_enter(&d->bd_mtx);
        bpf_detachd(d);
-       bpf_wakeup(d);
        LIST_REMOVE(d, bd_list);
        mtx_leave(&d->bd_mtx);
        bpf_put(d);
Index: if_tun.c
===================================================================
RCS file: /cvs/src/sys/net/if_tun.c,v
retrieving revision 1.231
diff -u -p -r1.231 if_tun.c
--- if_tun.c    9 Mar 2021 20:05:14 -0000       1.231
+++ if_tun.c    16 Jan 2022 04:33:02 -0000
@@ -460,7 +460,6 @@ tun_dev_close(dev_t dev, struct proc *p)
        ifq_purge(&ifp->if_snd);
 
        CLR(sc->sc_flags, TUN_ASYNC);
-       selwakeup(&sc->sc_rsel);
        sigio_free(&sc->sc_sigio);
 
        if (!ISSET(sc->sc_flags, TUN_DEAD)) {

Reply via email to