From 0b9823be9c3ab51c814b9bec58430451b06bac8c Mon Sep 17 00:00:00 2001 From: Simon Schubert Date: Tue, 31 Jul 2007 20:47:14 +0000 Subject: [PATCH] Reorder initialization sequence of devclasses. This fixes a panic triggered by the use of the devclass of a driver during the attachment of this driver. Reported-by: Wesley Hearn Reviewed-by: dillon --- sys/kern/subr_bus.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c index d664a153b9..107ec1c2eb 100644 --- a/sys/kern/subr_bus.c +++ b/sys/kern/subr_bus.c @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/kern/subr_bus.c,v 1.54.2.9 2002/10/10 15:13:32 jhb Exp $ - * $DragonFly: src/sys/kern/subr_bus.c,v 1.38 2007/05/05 16:52:55 dillon Exp $ + * $DragonFly: src/sys/kern/subr_bus.c,v 1.39 2007/07/31 20:47:14 corecode Exp $ */ #include "opt_bus.h" @@ -2618,9 +2618,6 @@ driver_module_handler(module_t mod, int what, void *arg) driver = dmd->dmd_driver; PDEBUG(("Loading module: driver %s on bus %s", DRIVERNAME(driver), dmd->dmd_busname)); - error = devclass_add_driver(bus_devclass, driver); - if (error) - break; /* * If the driver has any base classes, make the @@ -2633,8 +2630,12 @@ driver_module_handler(module_t mod, int what, void *arg) parentname = driver->baseclasses[0]->name; else parentname = NULL; - *dmd->dmd_devclass = devclass_find_internal(driver->name, + *dmd->dmd_devclass = devclass_find_internal(driver->name, parentname, TRUE); + + error = devclass_add_driver(bus_devclass, driver); + if (error) + break; break; case MOD_UNLOAD: -- 2.41.0