Some USB network interfaces like rum(4) report ENXIO from their
authorbluhm <bluhm@openbsd.org>
Fri, 13 Jul 2018 08:51:15 +0000 (08:51 +0000)
committerbluhm <bluhm@openbsd.org>
Fri, 13 Jul 2018 08:51:15 +0000 (08:51 +0000)
ioctl function after the device has been pulled out.  Also accept
this error code in bpf_detachd() to prevent a kernel panic.  tcpdump(8)
may run while the interface is detached.
from Moritz Buhl; OK stsp@

sys/net/bpf.c

index a6bcf31..d3cffa5 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: bpf.c,v 1.169 2018/03/02 16:57:41 bluhm Exp $ */
+/*     $OpenBSD: bpf.c,v 1.170 2018/07/13 08:51:15 bluhm Exp $ */
 /*     $NetBSD: bpf.c,v 1.33 1997/02/21 23:59:35 thorpej Exp $ */
 
 /*
@@ -332,7 +332,8 @@ bpf_detachd(struct bpf_d *d)
                mtx_enter(&d->bd_mtx);
                bpf_put(d);
 
-               if (error && !(error == EINVAL || error == ENODEV))
+               if (error && !(error == EINVAL || error == ENODEV ||
+                   error == ENXIO))
                        /*
                         * Something is really wrong if we were able to put
                         * the driver into promiscuous mode, but can't