diff --git a/lib/libdevctl/devctl.3 b/lib/libdevctl/devctl.3 --- a/lib/libdevctl/devctl.3 +++ b/lib/libdevctl/devctl.3 @@ -381,6 +381,10 @@ .El .Pp The +.Fn devctl_clear_driver +function will not fail if no suitable new driver for the device could be found. +.Pp +The .Fn devctl_rescan function may fail if: .Bl -tag -width Er diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c --- a/sys/kern/subr_bus.c +++ b/sys/kern/subr_bus.c @@ -5934,7 +5934,14 @@ dev->flags &= ~DF_FIXEDCLASS; dev->flags |= DF_WILDCARD; devclass_delete_device(dev->devclass, dev); - error = device_probe_and_attach(dev); + error = device_probe(dev); + if (error == ENXIO) { + error = 0; + break; + } + if (error == 0) { + error = device_attach(dev); + } break; case DEV_RESCAN: if (!device_is_attached(dev)) {