Index: bpf.c =================================================================== RCS file: /cvs/src/sys/net/bpf.c,v retrieving revision 1.203 diff -u -p -r1.203 bpf.c --- bpf.c 21 Jan 2021 12:33:14 -0000 1.203 +++ bpf.c 21 Apr 2021 00:03:15 -0000 @@ -1222,6 +1222,7 @@ int filt_bpfread(struct knote *kn, long hint) { struct bpf_d *d = kn->kn_hook; + struct bpf_if *bp; KERNEL_ASSERT_LOCKED(); @@ -1229,9 +1230,11 @@ filt_bpfread(struct knote *kn, long hint kn->kn_data = d->bd_hlen; if (d->bd_immediate) kn->kn_data += d->bd_slen; + + bp = d->bd_bif; /* check that the interface is still attached */ mtx_leave(&d->bd_mtx); - return (kn->kn_data > 0); + return (kn->kn_data > 0 || bp == NULL); } /* 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 21 Apr 2021 00:03:15 -0000 @@ -1029,7 +1029,7 @@ filt_tunread(struct knote *kn, long hint kn->kn_data = ifq_hdatalen(&ifp->if_snd); - return (kn->kn_data > 0); + return (kn->kn_data > 0 || sc->sc_dev == 0); } void