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 @@ -1140,6 +1140,7 @@ devclass_add_driver(devclass_t dc, driver_t *driver, int pass, devclass_t *dcp) { driverlink_t dl; + devclass_t child_dc; const char *parentname; PDEBUG(("%s", DRIVERNAME(driver))); @@ -1171,7 +1172,9 @@ parentname = driver->baseclasses[0]->name; else parentname = NULL; - *dcp = devclass_find_internal(driver->name, parentname, TRUE); + child_dc = devclass_find_internal(driver->name, parentname, TRUE); + if (dcp != NULL) + *dcp = child_dc; dl->driver = driver; TAILQ_INSERT_TAIL(&dc->drivers, dl, link);